diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f3bb140d1b1aaa5cc99b94b2ed8570d35b6a3b33..6eedb903742871981a14de56aa71f0ebd479b2f4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,6 +3,7 @@ stages: - syntax - syntax_diff - test + - build # ### Stage syntax @@ -16,6 +17,7 @@ syntax:lint: - schedules - web - merge_requests + - /^\d+\.\d+\.\d+$/ script: - echo "Syntax checking PHP files" @@ -31,6 +33,12 @@ syntax_diff:lint: - pushes - branches + except: + - schedules + - web + - merge_requests + - /^\d+\.\d+\.\d+$/ + script: - echo "Syntax checking PHP files" - bash ./.git-scripts/syntax.sh commit @@ -51,15 +59,46 @@ syntax_diff:lint: # - vendor/bin/phplint -test:install: - stage: test - image: jerob/docker-ispconfig - only: - - schedules - - web - script: - - $CI_PROJECT_DIR/helper_scripts/test_install_docker.sh - - apt-get update - - apt-get --yes install curl - - curl --insecure https://127.0.0.1:8080/login/ - - ps xaf +#test:install: +# stage: test +# image: jerob/docker-ispconfig +# only: +# - schedules +# - web +# - /^\d+\.\d+\.\d+$/ +# +# script: +# - $CI_PROJECT_DIR/helper_scripts/test_install_docker.sh +# - apt-get update +# - apt-get --yes install curl +# - curl --insecure https://127.0.0.1:8080/login/ +# - ps xaf +# +# needs: ["syntax:lint"] + +build:package: + stage: build + image: edbizarro/gitlab-ci-pipeline-php:7.2 + only: + refs: + - /^\d+\.\d+\.\d+$/ + - web + + script: + - echo "Building release." + - if [[ "$VER" == "" ]] ; then VER="$CI_COMMIT_TAG" ; fi + - if [[ "$VER" == "" ]] ; then VER="3.2dev"$(date +%s) ; fi + - if [[ "$VER" != "" ]] ; then echo "Replacing 3.2dev by $VER" ; sed -i -r 's/3\.2dev/'${VER}'/g' install/tpl/config.inc.php.master install/sql/ispconfig3.sql ; fi + - RET=0 + - tar -cpzf ISPConfig-${VER}.tar.gz --exclude "ISPConfig-${VER}.tar.gz" --exclude ".git*" --exclude ".phplint.yml" --transform 's,^\./,ispconfig3_install/,' . || RET=$? + - if [[ $RET > 1 ]] ; then exit $RET ; fi + - echo "Listing tar contents for verification" + - tar -tvf ISPConfig-${VER}.tar.gz + - echo "Uploading file to download server" + - curl -u "${DEPLOY_FTP_USER}:${DEPLOY_FTP_PASSWORD}" -T ISPConfig-${VER}.tar.gz ftp://${DEPLOY_FTP_SERVER}/web/ + - if [[ "$VER" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] ; then echo "Stable release ${VER}" ; curl -u "${DEPLOY_FTP_USER}:${DEPLOY_FTP_PASSWORD}" -T ISPConfig-${VER}.tar.gz ftp://${DEPLOY_FTP_SERVER}/web/ISPConfig-3-stable.tar.gz ; echo -n "${VER}" > ispconfig3_version.txt ; curl -u "${DEPLOY_FTP_USER}:${DEPLOY_FTP_PASSWORD}" -T ispconfig3_version.txt ftp://${DEPLOY_FTP_SERVER}/web/ ; else echo "Dev release ${VER}" ; fi + - rm ISPConfig-${VER}.tar.gz + - echo "Download url is https://download.ispconfig.org/ISPConfig-${VER}.tar.gz" + + needs: ["syntax:lint"] + allow_failure: false \ No newline at end of file diff --git a/.gitlab/issue_templates/Bug.md b/.gitlab/issue_templates/Bug.md index 751016f70ad21999ff87d79d5e8191e1e1ae5d84..d86285d53d321b491b17bc8cfd3b228190f3773a 100644 --- a/.gitlab/issue_templates/Bug.md +++ b/.gitlab/issue_templates/Bug.md @@ -1,41 +1,45 @@ -## short description -What is happening and what is wrong with that? +<!-- Before creating a bug report, please: +- Read the contribution guidelines: https://git.ispconfig.org/ispconfig/ispconfig3/-/blob/develop/CONTRIBUTING.md +- Do not ask support questions here. If you are unsure if your problem is a bug, post a thread on the forum: https://www.howtoforge.com/community/#ispconfig-3.23 +- Make sure to remove any content from the description that you did not add. For example, if there are no related log entries, remove the whole "Related log entries" part. +--> -## correct behaviour -What should happen instead? +## Summary +<!-- What is happening and what is wrong with that? --> -## environment -Server OS: (debian/ubuntu/centos/...) -Server OS version: (wheezy/trusty/centos6/...) -ISPConfig version: (3.0.5.4/3.1.5/3.1dev/...) -_you can use `grep 'ISPC_APP_VERSION' /usr/local/ispconfig/server/lib/config.inc.php` to get it from the command line_ +## Steps to reproduce +1. [First step] +2. [Second step] +3. [and so on...] -If it might be related to the problem -``` -insert the output of `nginx -v` or `apachectl -v` here -``` +## Correct behaviour +<!-- What should happen instead? --> + +## Environment +Server OS + version: (Debian 10/Ubuntu 20.04/CentOS 8/...) \ +ISPConfig version: (3.1.15p3/3.2.3/3.2dev/...) +<!-- _you can use `grep 'ISPC_APP_VERSION' /usr/local/ispconfig/server/lib/config.inc.php` to get it from the command line_ --> +Software version of the related software: +<!-- You can use 'nginx -v' or 'apachectl -v' to find the webserver version. Use 'php -v' to find the PHP version.> Put this in code blocks, like so: --> ``` -insert the output of `php -v` here +Output of the command ``` -## proposed fix +## Proposed fix optional, of course. -if you want to post code snippets, please use +if you want to post code snippets, please use ``` your code ``` -or attach a code file. Best is to create a merge request of course. +or attach a code file. Best is to create a merge request of course. -## references -if you know of related bugs or feature requests, please reference them by using `#<bugnumber>`, e. g. #123 -if you have done a merge request already, please reference it by using `!<mergenumber>`, e. g. !12 +## References +if you know of related bugs or feature requests, please reference them by using `#<issuenumber>`, e. g. #6105 +if you have done a merge request already, please reference it by using `!<mergenumber>`, e. g. !1444 if you know of a forum post on howtoforge.com that deals with this topic, just add the link to the forum topic here -## screenshots +## Screenshots optional, of course. Add screenshots of the problem by clicking "Attach a file" on the bottom right. -## log entries -``` -apache / nginx error.log lines (if related) -``` \ No newline at end of file +## Related log entries diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b515c5348d24a4c042076a9ae5e4c764a522950f..3a4a7de71fac0c761db397a24d37111979ada037 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,99 +1,319 @@ -# Which code branch to use +# Contributing to ISPConfig +ISPConfig is a open source project and community contributions are very welcome. To contribute, please stick to the guidelines. -The master branch is used for code (mostly new features) that shall go into the next major release (e.g. 3.2, 3.3 and so on). The stable branch (e.g. stable-3.1, stable-3.2) is the branch for the current intermediate and bugfix releases. Bugfixes shall be committed to the current stable branch and not the master branch. The stable branch is merged to the master automatically from time to time, please do not submit bugfixes a second time against the master. +This document is under development and will be continuously improved. + +# Issues +* Before opening a new issue, use the search function to check if there isn't a bug report / feature request already. +* If you are reporting a bug, please share your OS and PHP (CLI) version. +* If you want to report several bugs or request several features, open a separate issue for each one of them. + +# Branches +* If you are a new user, please send an email to: dev [at] ispconfig [dot] org to receive rights to fork the project. +* Please create an issue for each contribution you want to make. +* Do not put multiple contributions into a single branch and merge request. Each contribution should have it's own branch. +* Do not use the develop branch in your forked project for your contribution. Create a separate branch for each issue. +* Give your branch a name, e. g. `6049-update-the-contributing-doc ` where 6049 is the issue number. + +# Merge requests +Please give your merge request a description that shortly states what it is about. Merge requests without a good title or with missing description will get delayed because it is more effort for us to check the meaning of the changes made. +Once again: Do not put multiple things into a single merge request. If you for example fix two issues where one affects apache and one mail users, use separate issues and separate merge requests. +You can group multiple issues in a single merge request if they have the same specific topic, e. g. if you have one issue stating that a language entry in mail users is missing and a second issue that a language entry for server config is missing, you can put both issues into a single branch and merge request. Be sure to include all issue ids (if multiple) into the merge request's description in this case. +* Open a issue for the bug you want to fix / the feature you want to implement +* After opening the issue, commit your changes to your branch +* Note the issue # in every commit +* Update the documentation (New devs will not have access to this. Please send a email to docs@ispconfig.org) +* Add translations for every language +* Use a short title +* Write a clear description - for example, when updating the contributing guidelines with issue #6049: \ +"Update of our contributing guidelines \ +Closes #6049" +* Please be aware that we are not able to accept merge request that do not stick to the coding guidelines. We need to insist on that to keep the code clean and maintainable. # Some guidelines for web development with php. ----------------------------------------------------- -* Unix Line Breaks Only, NO windows breaks please. -* Tabs to indent lines, NO spaces -* no accidental _<?php space before, within or after a file -* every PHP file starts and end with <?php ?> no spaces before or after -* error_reporting(E_ALL|E_STRICT), yep PHP 5 -* Magic quotes is gone, get used to it now. config = magic_quotes_gpc() Everything must be quoted -* Don't use ereg, split and other old function -> gone in PHP 5.4 -* Don't use features that are not supported in PHP 5.3, for compatibility with LTS OS releases, ISPConfig must support PHP 5.3+ -* Don't use shorttags. A Shorttag is <? and that is confusing with <?xml -> always use <?php +* Don't use features that are not supported in PHP 5.4, for compatibility with LTS OS releases, ISPConfig must support PHP 5.4+ +* Don't use shorttags. A Shorttag is `<?` and that is confusing with `<?xml` -> always use `<?php` * Don't use namespaces * Column names in database tables and database table names are in lowercase * Classes for the interface are located in interface/lib/classes/ and loaded with $app->uses() or $app->load() functions. * Classes for the server are located in server/lib/classes/ and loaded with $app->uses() or $app->load() functions. -* please mark any section that need review or work on with /* TODO: short description */ -* Make function / var names on the following way, first word lower, next word(s) first letter upper like. getFirstResult(); -* always a space but NO newline before opening braces, e. g. -``` -class abc { - public function cde() { - if($a == $b) { - return false; - } - } + +### Indentations + +Indentations are always done with tabs. Do **not** use spaces. +It is recommended to set your IDE to display tabs with a width of 4 spaces. + +### Variable and method / function names + +Methods and functions should always be written in camel-case. Variables and properties should always be lowercase instead. + +**Correct:** +```php +class MyClass { + private $issue_list = []; + + private function getMyValue() { + + } } ``` -* no spaces after function/method or control names, e. g. -``` -function abc($x, $y) { - if($condition == true) { - $x = 2; - } + +**Wrong:** +```php +class my_class { + private $IssueList = []; + + private function get_my_value() { + + } } ``` -and NOT + +### Blocks + +#### Curly braces + +Opening curly braces always have to be in the same line as the preceding condition. They are separated by a single space from the closing paranthesis. +Closing curly braces are always on a separate line after the last statement in the block. The only exception is a do-while block where the logic is inverted. + +Curly braces are **always** to be used. Do not leave them out, even if there is only a single statement in the corresponding block. + +**Correct:** +```php +if($variable === true) { + +} + +while($condition) { + +} + +do { + +} while($condition); ``` -function abc ($x, $y) { - if ( $condition == true ) { - - } + +**Wrong:** +```php +if($variable === true){ + +} + +if($variable === true) +{ + } + +if($variable === true) + $x = 'no braces'; + +while($condition) { } ``` -# Commenting style +#### Short style + +The short style of conditional assignments is allowed to be used, but it must not affect readability, e. g. they shall not be nested. + +**Allowed:** +```php +$a = 0; +if($condition === true) { + $a = 1; +} -The comments break down into the following types +$a = ($condition === true ? 1 : 0); ``` -// is uses for removing lines and debug dev etc -/* - is used to comment out blocks -*/ -/** is used to create documentaion - * thats over - * lines - */ +**Disallowed:** +```php +$x = ($condition === true ? ($further == 'foo' ? true : false) : true); ``` -If you need to block out a section then use + + +#### Spaces and paranthesis + +The rules for using spaces are: +- no space after `if`/`while` etc. and the following opening paranthesis +- single space after closing paranthesis and before opening curly brace +- no spaces at the end of a line +- no spaces after opening paranthesis and before closing paranthesis +- single space before and after comparators + +**Correct:** +```php +if($variable === $condition) { + +} + +while(($condition !== false || $condition2 === true) && $n <= 15) { + $n++; +} ``` -/* -function redundant_code(){ - something here + +**Wrong:** +```php +if ($variable===$condition) { + +} + +while(($condition!==false||$condition2===true))&&$n<=15){ + } -*/ ``` -To block out single lines use // and all // are assumed to be redundant test code and NOT comments -// print_r($foo); +#### Newlines inside of conditions + +Breaking up conditions into separate lines can be done if it positively affects readability. + +```php +if($condition === true && ($state === 'completed' || $state === 'pending') && ($processed_by !== null || $process_time < time())) { -Do not use the phpdoc on every function, eg +} ``` -/** -* Login a user -* @param string user username -* @param string password of user -*/ -function login($user, $pass){ - +can also be written as +```php +if($condition === true + && ($state === 'completed' || $state === 'pending') + && ($processed_by !== null || $process_time < time()) + ) { + } ``` -as this function is self-explaining, the following clean code will suffice +This must not be abused, e. g. the following is not allowed: + +```php +if($a == 1 + || $b == 2) { + + } ``` -function login($user, $pass){ - -} + +### Arrays + +#### Short syntax + +Please **do** use short array syntax. We have deprecated the old-style array syntax. + +**Correct**: +```php +$var = []; + +$var2 = [ + 'conf' => [ + 'setting1' => 'value1' + ] +]; ``` -# Where to store custom settings +**Wrong:** +```php +$var = array(); -## Interface settings +$var2 = array( + 'conf' => array( + 'setting1' => 'value1' + ) +); +``` + +#### Spaces and newlines + +When defining an empty array, both brackets shall be on the same line. When defining an array with values, the style depends on the values you are going to assign. + +##### List of values + +When defining an array with a list of values, e. g. numbers or names, they should be on the same line as the brackets without using new lines, as long as the line does not exceed a total number of characters of about 90. After each comma there has to be a single space. + +##### Nested array + +When defining a nested array onle the opening bracket is to be on the same line. The closing bracket has to be on a separate line indented by `tabs * level of array`. + +##### Examples + +```php +// empty array +$a = []; +// array with list of values +$array = [4, 3, 76, 12]; + +// array with long list of values +$array = [ + 'This is one entry', 'This is a second one', 'Another one', 'Further entries', 'foo', 'bar', 34, 42, $variable, // newline here for better readability + 'Next entry', 'the last entry' +]; + +// nested array +$array = [ + 'conf' => [ + 'level' => 1, + 'settings' => [ + 'window' => 'open', + 'door' => 'closed + ] + ] +]; +``` + +**Not-to-dos:** +```php +$array=[ +]; + +$array = [ + 1, + 4, + 35, + 23, + 345, + 11, + 221, + 'further', + '...' +]; + +$array=['conf'=>['settings'=>['window' => 'open', 'door' => 'closed]]]; +``` + +### Strings + +Whenever possible use single quotes `'` instead of double qoutes `"`. Try not to embedd variables in string. Concatenate them instead. + +**Correct:** +```php +// simple text +$var = 'This is a text'; + +// array index +$array['index'] = 'value'; + +// text with variables +$var = 'This is a text with ' . $value . ' values inside and at the end: ' . $sum_value; + +// dynamic array index +$idx = 'index' . $key; +$value = $array[$idx]; +``` + +**Wrong:** +```php +// simple text +$var = "This is a text"; + +// array index +$array["index"] = 'value'; + +// text with variables +$var = "This is a text with $value values inside and at the end: {$sum_value}"; + +// dynamic array index +$value = $array['index' . $key]; +$value = $array["index{$key}"]; +``` + +# Where to store custom settings +## Interface settings The recommended place to store global interface settings is the ini style global config system (see system.ini.master file in install/tpl/ to set defaults). The settings file gets stored inside the ispconfig database. Settings can be accessed with the function: @@ -109,7 +329,6 @@ fields to the file interface/web/admin/form/system_config.tform.php and the corr tempalte file in the templates subfolder of the admin module. ## Server settings - Server settings are stored in the ini style server config system (see server.ini.master template file) The settings file gets stored inside the ispconfig database in the server table. Settings can be accessed with the function $app->getconf->get_server_config(....) diff --git a/README.md b/README.md index 1ffa1519938200eda108baa58dce4ea548ffc935..9e0eea359d5d45ef47818fe2d59979807c242f6f 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,46 @@ # ISPConfig - Hosting Control Panel - + \ Development branch: [](https://git.ispconfig.org/ispconfig/ispconfig3/commits/develop) - +## Functions - Manage multiple servers from one control panel -- Web server management (Apache2 and nginx) -- Mail server management (with virtual mail users) -- DNS server management (BIND and MyDNS) +- Single server, multiserver and mirrored clusters. +- Webserver management +- Mailserver management +- DNS server management - Virtualization (OpenVZ) -- Administrator, reseller and client login -- Configuration mirroring and clusters -- Open Source software (BSD license) +- Administrator, reseller, client and mailuser login +- Open Source software ([BSD license](LICENSE)) + +## Supported daemons +- HTTP: Apache2 and NGINX +- HTTP stats: Webalizer, GoAccess and AWStats +- Let's Encrypt: Acme.sh and certbot +- SMTP: Postfix +- POP3/IMAP: Dovecot +- Spamfilter: Rspamd and Amavis +- FTP: PureFTPD +- DNS: BIND9 and PowerDNS[^1] +- Database: MariaDB and MySQL + +[^1]: not actively tested + +## Supported operating systems +- Debian 9, 10, and testing +- Ubuntu 16.04 - 20.04 +- CentOS 7 and 8 + +## Auto-install script +You can install the "Perfect Server" with ISPConfig using [our official autoinstaller](https://www.howtoforge.com/ispconfig-autoinstall-debian-ubuntu/) + +## Migration tool +The Migration Tool helps you to import data from other control panels (currently ISPConfig 2 and 3 – 3.2, Plesk 10 – 12.5, Plesk Onyx, CPanel[^2] and Confixx 3). For more information, see https://www.ispconfig.org/add-ons/ispconfig-migration-tool/ + +[^2]: The Migration Toolkit now contains beta support for migrating CPanel to ISPConfig. + +## Documentation +You can support ISPConfig development by buying the manual: https://www.ispconfig.org/documentation/ + +## Contributing +If you like to contribute to the ISPConfig development, please read the contributing guidelines: [CONTRIBUTING.MD](CONTRIBUTING.md) + diff --git a/helper_scripts/cert_check.sh b/helper_scripts/cert_check.sh new file mode 100644 index 0000000000000000000000000000000000000000..148ab59f7aa20abf5babb259c29299700096071c --- /dev/null +++ b/helper_scripts/cert_check.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +chkdata() { + F=$1 + CRT=$2 + KEY=$3 + if [[ "$CRT" != "" && "$KEY" != "" ]] ; then + if [[ ! -f "$CRT" ]] ; then + echo "[WARN] CERTIFICATE FILE ${CRT} MISSING FOR ${F}" ; + else + echo -n "Checking ${CRT}" ; + CHK=$(openssl x509 -in "${CRT}" -text -noout >/dev/null 2>&1 ; echo $?); + if [[ $CHK -ne 0 ]] ; then + echo " FAILED!" ; + else + echo " OK" ; + fi + fi + if [[ ! -f "$KEY" ]] ; then + echo "[WARN] KEY FILE ${KEY} MISSING FOR ${F}" ; + else + echo -n "Checking ${KEY}" ; + CHK=$(openssl rsa -in "${KEY}" -check -noout >/dev/null 2>&1 ; echo $?); + if [[ $CHK -ne 0 ]] ; then + echo " FAILED!" ; + else + echo " OK" ; + fi + fi + + if [[ -f "$CRT" && -f "$KEY" ]] ; then + echo -n "Checking that key and certificate match"; + MDCRT=$(openssl x509 -noout -modulus -in "${CRT}" | openssl md5) ; + MDKEY=$(openssl rsa -noout -modulus -in "${KEY}" | openssl md5) ; + if [[ "$MDCRT" != "$MDKEY" ]] ; then + echo " FAILED!" ; + else + echo " OK" ; + fi + fi + echo "---" ; + elif [[ "$CRT" != "" || "$KEY" != "" ]] ; then + echo "[WARN] Check SSL config of ${F}"; + echo "---" ; + fi +} + +if [[ -d /etc/apache2/sites-enabled ]] ; then + echo "Checking enabled apache vhosts" ; + for FIL in /etc/apache2/sites-enabled/* ; do + CRT=$(grep 'SSLCertificateFile' "${FIL}" | grep -E -v '^[[:space:]]*#' | awk '{print $2}' | head -n 1) ; + KEY=$(grep 'SSLCertificateKeyFile' "${FIL}" | grep -E -v '^[[:space:]]*#' | awk '{print $2}' | head -n 1) ; + chkdata "$FIL" "$CRT" "$KEY" ; + done +fi + +if [[ -d /etc/nginx/sites-enabled ]] ; then + echo "Checking enabled nginx vhosts" ; + for FIL in /etc/nginx/sites-enabled/* ; do + CRT=$(grep 'ssl_certificate' "${FIL}" | grep -E -v '^[[:space:]]*#' | awk '{print $2}' | head -n 1) ; + CRT=${CRT%;} + KEY=$(grep 'ssl_certificate_key' "${FIL}" | grep -E -v '^[[:space:]]*#' | awk '{print $2}' | head -n 1) ; + KEY=${KEY%;} + chkdata "$FIL" "$CRT" "$KEY" ; + done +fi \ No newline at end of file diff --git a/install/dist/conf/centos52.conf.php b/install/dist/conf/centos52.conf.php index 12044d3ce07d36d42e166c961c4939b4d82ba01f..6dff93f65f3a609cb32111f483fdb10727efbec4 100644 --- a/install/dist/conf/centos52.conf.php +++ b/install/dist/conf/centos52.conf.php @@ -147,6 +147,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc'; $conf['amavis']['init_script'] = 'amavisd'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamd'; diff --git a/install/dist/conf/centos53.conf.php b/install/dist/conf/centos53.conf.php index 12044d3ce07d36d42e166c961c4939b4d82ba01f..6dff93f65f3a609cb32111f483fdb10727efbec4 100644 --- a/install/dist/conf/centos53.conf.php +++ b/install/dist/conf/centos53.conf.php @@ -147,6 +147,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc'; $conf['amavis']['init_script'] = 'amavisd'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamd'; diff --git a/install/dist/conf/debian100.conf.php b/install/dist/conf/debian100.conf.php index 28d82b80794fad567dec6720a890596bd4838bcb..0861af83deb1729230d9d978e0cdd38b0d0371d4 100644 --- a/install/dist/conf/debian100.conf.php +++ b/install/dist/conf/debian100.conf.php @@ -153,6 +153,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamav-daemon'; diff --git a/install/dist/conf/debian110.conf.php b/install/dist/conf/debian110.conf.php new file mode 100644 index 0000000000000000000000000000000000000000..c60152df5c846daa79feaa03868cc65236f0e32a --- /dev/null +++ b/install/dist/conf/debian110.conf.php @@ -0,0 +1,239 @@ +<?php + +/* +Copyright (c) 2021, Till Brehm, ISPConfig UG +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of ISPConfig nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +//*** Debian 11 default settings + +//* Main +$conf['language'] = 'en'; +$conf['distname'] = 'debian110'; +$conf['hostname'] = 'server1.domain.tld'; // Full hostname +$conf['ispconfig_install_dir'] = '/usr/local/ispconfig'; +$conf['ispconfig_config_dir'] = '/usr/local/ispconfig'; +$conf['ispconfig_log_priority'] = 2; // 0 = Debug, 1 = Warning, 2 = Error +$conf['ispconfig_log_dir'] = '/var/log/ispconfig'; +$conf['server_id'] = 1; +$conf['init_scripts'] = '/etc/init.d'; +$conf['runlevel'] = '/etc'; +$conf['shells'] = '/etc/shells'; +$conf['pam'] = '/etc/pam.d'; + +//* Services provided by this server, this selection will be overridden by the expert mode +$conf['services']['mail'] = true; +$conf['services']['web'] = true; +$conf['services']['dns'] = true; +$conf['services']['file'] = true; +$conf['services']['db'] = true; +$conf['services']['vserver'] = true; +$conf['services']['proxy'] = false; +$conf['services']['firewall'] = false; + +//* MySQL +$conf['mysql']['installed'] = false; // will be detected automatically during installation +$conf['mysql']['init_script'] = 'mysql'; +$conf['mysql']['host'] = 'localhost'; +$conf['mysql']['ip'] = '127.0.0.1'; +$conf['mysql']['port'] = '3306'; +$conf['mysql']['database'] = 'dbispconfig'; +$conf['mysql']['admin_user'] = 'root'; +$conf['mysql']['admin_password'] = ''; +$conf['mysql']['charset'] = 'utf8'; +$conf['mysql']['ispconfig_user'] = 'ispconfig'; +$conf['mysql']['ispconfig_password'] = md5(uniqid(rand())); +$conf['mysql']['master_slave_setup'] = 'n'; +$conf['mysql']['master_host'] = ''; +$conf['mysql']['master_database'] = 'dbispconfig'; +$conf['mysql']['master_admin_user'] = 'root'; +$conf['mysql']['master_admin_password'] = ''; +$conf['mysql']['master_ispconfig_user'] = ''; +$conf['mysql']['master_ispconfig_password'] = md5(uniqid(rand())); + +//* Apache +$conf['apache']['installed'] = false; // will be detected automatically during installation +$conf['apache']['user'] = 'www-data'; +$conf['apache']['group'] = 'www-data'; +$conf['apache']['init_script'] = 'apache2'; +$conf['apache']['version'] = '2.4'; +$conf['apache']['vhost_conf_dir'] = '/etc/apache2/sites-available'; +$conf['apache']['vhost_conf_enabled_dir'] = '/etc/apache2/sites-enabled'; +$conf['apache']['vhost_port'] = '8080'; +$conf['apache']['php_ini_path_apache'] = '/etc/php/7.4/apache2/php.ini'; +$conf['apache']['php_ini_path_cgi'] = '/etc/php/7.4/cgi/php.ini'; + +//* Website base settings +$conf['web']['website_basedir'] = '/var/www'; +$conf['web']['website_path'] = '/var/www/clients/client[client_id]/web[website_id]'; +$conf['web']['website_symlinks'] = '/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/'; + +//* Apps base settings +$conf['web']['apps_vhost_ip'] = '_default_'; +$conf['web']['apps_vhost_port'] = '8081'; +$conf['web']['apps_vhost_servername'] = ''; +$conf['web']['apps_vhost_user'] = 'ispapps'; +$conf['web']['apps_vhost_group'] = 'ispapps'; + +//* Fastcgi +$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php/7.4/cgi/'; +$conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/'; +$conf['fastcgi']['fastcgi_bin'] = '/usr/bin/php-cgi'; + +//* Postfix +$conf['postfix']['installed'] = false; // will be detected automatically during installation +$conf['postfix']['config_dir'] = '/etc/postfix'; +$conf['postfix']['init_script'] = 'postfix'; +$conf['postfix']['user'] = 'postfix'; +$conf['postfix']['group'] = 'postfix'; +$conf['postfix']['vmail_userid'] = '5000'; +$conf['postfix']['vmail_username'] = 'vmail'; +$conf['postfix']['vmail_groupid'] = '5000'; +$conf['postfix']['vmail_groupname'] = 'vmail'; +$conf['postfix']['vmail_mailbox_base'] = '/var/vmail'; + +//* Mailman +$conf['mailman']['installed'] = false; // will be detected automatically during installation +$conf['mailman']['config_dir'] = '/etc/mailman'; +$conf['mailman']['init_script'] = 'mailman'; + +//* mlmmj +$conf['mlmmj']['installed'] = false; // will be detected automatically during installation +$conf['mlmmj']['config_dir'] = '/etc/mlmmj'; + +//* Getmail +$conf['getmail']['installed'] = false; // will be detected automatically during installation +$conf['getmail']['config_dir'] = '/etc/getmail'; +$conf['getmail']['program'] = '/usr/bin/getmail'; + +//* Courier +$conf['courier']['installed'] = false; // will be detected automatically during installation +$conf['courier']['config_dir'] = '/etc/courier'; +$conf['courier']['courier-authdaemon'] = 'courier-authdaemon'; +$conf['courier']['courier-imap'] = 'courier-imap'; +$conf['courier']['courier-imap-ssl'] = 'courier-imap-ssl'; +$conf['courier']['courier-pop'] = 'courier-pop'; +$conf['courier']['courier-pop-ssl'] = 'courier-pop-ssl'; + +//* Dovecot +$conf['dovecot']['installed'] = false; // will be detected automatically during installation +$conf['dovecot']['config_dir'] = '/etc/dovecot'; +$conf['dovecot']['init_script'] = 'dovecot'; + +//* SASL +$conf['saslauthd']['installed'] = false; // will be detected automatically during installation +$conf['saslauthd']['config'] = '/etc/default/saslauthd'; +$conf['saslauthd']['init_script'] = 'saslauthd'; + +//* Amavisd +$conf['amavis']['installed'] = false; // will be detected automatically during installation +$conf['amavis']['config_dir'] = '/etc/amavis'; +$conf['amavis']['init_script'] = 'amavis'; + +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + +//* ClamAV +$conf['clamav']['installed'] = false; // will be detected automatically during installation +$conf['clamav']['init_script'] = 'clamav-daemon'; + +//* Pureftpd +$conf['pureftpd']['installed'] = false; // will be detected automatically during installation +$conf['pureftpd']['config_dir'] = '/etc/pure-ftpd'; +$conf['pureftpd']['init_script'] = 'pure-ftpd-mysql'; + +//* MyDNS +$conf['mydns']['installed'] = false; // will be detected automatically during installation +$conf['mydns']['config_dir'] = '/etc'; +$conf['mydns']['init_script'] = 'mydns'; + +//* PowerDNS +$conf['powerdns']['installed'] = false; // will be detected automatically during installation +$conf['powerdns']['database'] = 'powerdns'; +$conf["powerdns"]["config_dir"] = '/etc/powerdns/pdns.d'; +$conf['powerdns']['init_script'] = 'pdns'; + +//* BIND DNS Server +$conf['bind']['installed'] = false; // will be detected automatically during installation +$conf['bind']['bind_user'] = 'root'; +$conf['bind']['bind_group'] = 'bind'; +$conf['bind']['bind_zonefiles_dir'] = '/etc/bind'; +$conf['bind']['named_conf_path'] = '/etc/bind/named.conf'; +$conf['bind']['named_conf_local_path'] = '/etc/bind/named.conf.local'; +$conf['bind']['init_script'] = 'bind9'; + +//* Jailkit +$conf['jailkit']['installed'] = false; // will be detected automatically during installation +$conf['jailkit']['config_dir'] = '/etc/jailkit'; +$conf['jailkit']['jk_init'] = 'jk_init.ini'; +$conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini'; +$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico /usr/bin/mysql /usr/bin/mysqldump /usr/bin/git /usr/bin/git-receive-pack /usr/bin/git-upload-pack /usr/bin/unzip /usr/bin/zip /bin/tar /bin/rm /usr/bin/patch'; +$conf['jailkit']['jailkit_chroot_cron_programs'] = '/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php'; + +//* Squid +$conf['squid']['installed'] = false; // will be detected automatically during installation +$conf['squid']['config_dir'] = '/etc/squid'; +$conf['squid']['init_script'] = 'squid'; + +//* Nginx +$conf['nginx']['installed'] = false; // will be detected automatically during installation +$conf['nginx']['user'] = 'www-data'; +$conf['nginx']['group'] = 'www-data'; +$conf['nginx']['config_dir'] = '/etc/nginx'; +$conf['nginx']['vhost_conf_dir'] = '/etc/nginx/sites-available'; +$conf['nginx']['vhost_conf_enabled_dir'] = '/etc/nginx/sites-enabled'; +$conf['nginx']['init_script'] = 'nginx'; +$conf['nginx']['vhost_port'] = '8080'; +$conf['nginx']['cgi_socket'] = '/var/run/fcgiwrap.socket'; +$conf['nginx']['php_fpm_init_script'] = 'php7.4-fpm'; +$conf['nginx']['php_fpm_ini_path'] = '/etc/php/7.4/fpm/php.ini'; +$conf['nginx']['php_fpm_pool_dir'] = '/etc/php/7.4/fpm/pool.d'; +$conf['nginx']['php_fpm_start_port'] = 9010; +$conf['nginx']['php_fpm_socket_dir'] = '/var/lib/php7.4-fpm'; + +//* OpenVZ +$conf['openvz']['installed'] = false; + +//*Bastille-Firwall +$conf['bastille']['installed'] = false; +$conf['bastille']['config_dir'] = '/etc/Bastille'; + +//* vlogger +$conf['vlogger']['config_dir'] = '/etc'; + +//* cron +$conf['cron']['init_script'] = 'cron'; +$conf['cron']['crontab_dir'] = '/etc/cron.d'; +$conf['cron']['wget'] = '/usr/bin/wget'; + +//* Metronome XMPP +$conf['xmpp']['installed'] = false; +$conf['xmpp']['init_script'] = 'metronome'; + + +?> diff --git a/install/dist/conf/debiantesting.conf.php b/install/dist/conf/debiantesting.conf.php index 6ea9112dff854e87e39fac2c521d48cecf5fe840..cbc380fffb931252aba4593aad1a8376a0b4d84a 100644 --- a/install/dist/conf/debiantesting.conf.php +++ b/install/dist/conf/debiantesting.conf.php @@ -32,7 +32,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. //* Main $conf['language'] = 'en'; -$conf['distname'] = 'debian100'; +$conf['distname'] = 'debian110'; $conf['hostname'] = 'server1.domain.tld'; // Full hostname $conf['ispconfig_install_dir'] = '/usr/local/ispconfig'; $conf['ispconfig_config_dir'] = '/usr/local/ispconfig'; @@ -83,8 +83,8 @@ $conf['apache']['version'] = '2.4'; $conf['apache']['vhost_conf_dir'] = '/etc/apache2/sites-available'; $conf['apache']['vhost_conf_enabled_dir'] = '/etc/apache2/sites-enabled'; $conf['apache']['vhost_port'] = '8080'; -$conf['apache']['php_ini_path_apache'] = '/etc/php/7.3/apache2/php.ini'; -$conf['apache']['php_ini_path_cgi'] = '/etc/php/7.3/cgi/php.ini'; +$conf['apache']['php_ini_path_apache'] = '/etc/php/7.4/apache2/php.ini'; +$conf['apache']['php_ini_path_cgi'] = '/etc/php/7.4/cgi/php.ini'; //* Website base settings $conf['web']['website_basedir'] = '/var/www'; @@ -99,7 +99,7 @@ $conf['web']['apps_vhost_user'] = 'ispapps'; $conf['web']['apps_vhost_group'] = 'ispapps'; //* Fastcgi -$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php/7.3/cgi/'; +$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php/7.4/cgi/'; $conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/'; $conf['fastcgi']['fastcgi_bin'] = '/usr/bin/php-cgi'; @@ -210,11 +210,11 @@ $conf['nginx']['vhost_conf_enabled_dir'] = '/etc/nginx/sites-enabled'; $conf['nginx']['init_script'] = 'nginx'; $conf['nginx']['vhost_port'] = '8080'; $conf['nginx']['cgi_socket'] = '/var/run/fcgiwrap.socket'; -$conf['nginx']['php_fpm_init_script'] = 'php7.3-fpm'; -$conf['nginx']['php_fpm_ini_path'] = '/etc/php/7.3/fpm/php.ini'; -$conf['nginx']['php_fpm_pool_dir'] = '/etc/php/7.3/fpm/pool.d'; +$conf['nginx']['php_fpm_init_script'] = 'php7.4-fpm'; +$conf['nginx']['php_fpm_ini_path'] = '/etc/php/7.4/fpm/php.ini'; +$conf['nginx']['php_fpm_pool_dir'] = '/etc/php/7.4/fpm/pool.d'; $conf['nginx']['php_fpm_start_port'] = 9010; -$conf['nginx']['php_fpm_socket_dir'] = '/var/lib/php7.3-fpm'; +$conf['nginx']['php_fpm_socket_dir'] = '/var/lib/php7.4-fpm'; //* OpenVZ $conf['openvz']['installed'] = false; diff --git a/install/dist/conf/fedora9.conf.php b/install/dist/conf/fedora9.conf.php index 19c9a4f6259600499d493c66718cf64bb7ff0a13..23453ae48fc5fea77fbd965a8d57d28cafd49032 100644 --- a/install/dist/conf/fedora9.conf.php +++ b/install/dist/conf/fedora9.conf.php @@ -154,7 +154,7 @@ $conf['rspamd']['init_script'] = 'rspamd'; //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation -$conf['clamav']['init_script'] = 'clamd.amavisd'; +$conf['clamav']['init_script'] = 'clamd@amavisd'; //* Pureftpd $conf['pureftpd']['installed'] = false; // will be detected automatically during installation diff --git a/install/dist/conf/opensuse110.conf.php b/install/dist/conf/opensuse110.conf.php index e389c3b2a0ea727d619b453c477ef0a8f0964122..37f5a14d3b8e28f8517ac42e07690c8197480cb3 100644 --- a/install/dist/conf/opensuse110.conf.php +++ b/install/dist/conf/opensuse110.conf.php @@ -147,6 +147,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamd'; diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php index 154c6b99c487f7b009cd5b7741111c5617d853d7..981e6cff92a70216656435bddb10a393f01dca54 100644 --- a/install/dist/lib/debian60.lib.php +++ b/install/dist/lib/debian60.lib.php @@ -33,7 +33,7 @@ class installer extends installer_base { public function configure_dovecot() { global $conf; - + $virtual_transport = 'dovecot'; $configure_lmtp = false; @@ -48,7 +48,7 @@ class installer extends installer_base { $tmp = $this->db->queryOneRecord("SELECT * FROM ?? WHERE server_id = ?", $conf["mysql"]["database"] . ".server", $conf['server_id']); $ini_array = ini_to_array(stripslashes($tmp['config'])); // ini_array needs not to be checked, because already done in update.php -> updateDbAndIni() - + if(isset($ini_array['mail']['mailbox_virtual_uidgid_maps']) && $ini_array['mail']['mailbox_virtual_uidgid_maps'] == 'y') { $virtual_transport = 'lmtp:unix:private/dovecot-lmtp'; $configure_lmtp = true; @@ -108,6 +108,13 @@ class installer extends installer_base { } else { copy('tpl/debian6_dovecot2.conf.master', $config_dir.'/'.$configfile); } + // Copy custom config file + if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/dovecot_custom.conf.master')) { + if(!@is_dir($config_dir . '/conf.d')) { + mkdir($config_dir . '/conf.d'); + } + copy($conf['ispconfig_install_dir'].'/server/conf-custom/install/dovecot_custom.conf.master', $config_dir.'/conf.d/99-ispconfig-custom-config.conf'); + } replaceLine($config_dir.'/'.$configfile, 'postmaster_address = postmaster@example.com', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); replaceLine($config_dir.'/'.$configfile, 'postmaster_address = webmaster@localhost', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); if(version_compare($dovecot_version,2.1) < 0) { @@ -123,7 +130,7 @@ class installer extends installer_base { if(version_compare($dovecot_version,2.3) >= 0) { // Remove deprecated setting(s) removeLine($config_dir.'/'.$configfile, 'ssl_protocols ='); - + // Check if we have a dhparams file and if not, create it if(!file_exists('/etc/dovecot/dh.pem')) { swriteln('Creating new DHParams file, this takes several minutes. Do not interrupt the script.'); @@ -146,7 +153,7 @@ class installer extends installer_base { $content = str_replace('#2.3+ ','',$content); file_put_contents($config_dir.'/'.$configfile,$content); unset($content); - + } else { // remove settings which are not supported in Dovecot < 2.3 removeLine($config_dir.'/'.$configfile, 'ssl_min_protocol ='); @@ -159,7 +166,7 @@ class installer extends installer_base { copy('tpl/debian6_dovecot.conf.master', $config_dir.'/'.$configfile); } } - + $dovecot_protocols = 'imap pop3'; //* dovecot-lmtpd @@ -196,7 +203,7 @@ class installer extends installer_base { chmod($config_dir.'/'.$configfile, 0600); chown($config_dir.'/'.$configfile, 'root'); chgrp($config_dir.'/'.$configfile, 'root'); - + // Dovecot shall ignore mounts in website directory if(is_installed('doveadm')) exec("doveadm mount add '/var/www/*' ignore > /dev/null 2> /dev/null"); diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 9620bf3561ff4e403220bc94bbc3dad61e7ebe76..2e46ed16d351ae9bf906c588e8f39a36bd40989c 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -47,282 +47,6 @@ class installer_dist extends installer_base { } } - function configure_postfix($options = '') - { - global $conf,$autoinstall; - $cf = $conf['postfix']; - $config_dir = $cf['config_dir']; - - if(!is_dir($config_dir)){ - $this->error("The postfix configuration directory '$config_dir' does not exist."); - } - - //* mysql-virtual_domains.cf - $this->process_postfix_config('mysql-virtual_domains.cf'); - - //* mysql-virtual_forwardings.cf - $this->process_postfix_config('mysql-virtual_forwardings.cf'); - - //* mysql-virtual_alias_domains.cf - $this->process_postfix_config('mysql-virtual_alias_domains.cf'); - - //* mysql-virtual_alias_maps.cf - $this->process_postfix_config('mysql-virtual_alias_maps.cf'); - - //* mysql-virtual_mailboxes.cf - $this->process_postfix_config('mysql-virtual_mailboxes.cf'); - - //* mysql-virtual_email2email.cf - $this->process_postfix_config('mysql-virtual_email2email.cf'); - - //* mysql-virtual_transports.cf - $this->process_postfix_config('mysql-virtual_transports.cf'); - - //* mysql-virtual_recipient.cf - $this->process_postfix_config('mysql-virtual_recipient.cf'); - - //* mysql-virtual_sender.cf - $this->process_postfix_config('mysql-virtual_sender.cf'); - - //* mysql-virtual_sender_login_maps.cf - $this->process_postfix_config('mysql-virtual_sender_login_maps.cf'); - - //* mysql-virtual_client.cf - $this->process_postfix_config('mysql-virtual_client.cf'); - - //* mysql-virtual_relaydomains.cf - $this->process_postfix_config('mysql-virtual_relaydomains.cf'); - - //* mysql-virtual_relayrecipientmaps.cf - $this->process_postfix_config('mysql-virtual_relayrecipientmaps.cf'); - - //* mysql-virtual_outgoing_bcc.cf - $this->process_postfix_config('mysql-virtual_outgoing_bcc.cf'); - - //* mysql-virtual_policy_greylist.cf - $this->process_postfix_config('mysql-virtual_policy_greylist.cf'); - - //* mysql-virtual_gids.cf.master - $this->process_postfix_config('mysql-virtual_gids.cf'); - - //* mysql-virtual_uids.cf - $this->process_postfix_config('mysql-virtual_uids.cf'); - - //* mysql-virtual_alias_domains.cf - $this->process_postfix_config('mysql-verify_recipients.cf'); - - //* postfix-dkim - $filename='tag_as_originating.re'; - $full_file_name=$config_dir.'/'.$filename; - if(is_file($full_file_name)) copy($full_file_name, $full_file_name.'~'); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/postfix-'.$filename.'.master', 'tpl/postfix-'.$filename.'.master'); - wf($full_file_name, $content); - - $filename='tag_as_foreign.re'; - $full_file_name=$config_dir.'/'.$filename; - if(is_file($full_file_name)) copy($full_file_name, $full_file_name.'~'); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/postfix-'.$filename.'.master', 'tpl/postfix-'.$filename.'.master'); - wf($full_file_name, $content); - - //* Creating virtual mail user and group - $command = 'groupadd -g '.$cf['vmail_groupid'].' '.$cf['vmail_groupname']; - if(!is_group($cf['vmail_groupname'])) caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - $command = 'useradd -g '.$cf['vmail_groupname'].' -u '.$cf['vmail_userid'].' '.$cf['vmail_username'].' -d '.$cf['vmail_mailbox_base'].' -m'; - if(!is_user($cf['vmail_username'])) caselog("$command &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - //* These postconf commands will be executed on installation and update - $server_ini_rec = $this->db->queryOneRecord("SELECT config FROM server WHERE server_id = ?", $conf['server_id']); - $server_ini_array = ini_to_array(stripslashes($server_ini_rec['config'])); - unset($server_ini_rec); - - //* If there are RBL's defined, format the list and add them to smtp_recipient_restrictions to prevent removeal after an update - $rbl_list = ''; - if (@isset($server_ini_array['mail']['realtime_blackhole_list']) && $server_ini_array['mail']['realtime_blackhole_list'] != '') { - $rbl_hosts = explode(",", str_replace(" ", "", $server_ini_array['mail']['realtime_blackhole_list'])); - foreach ($rbl_hosts as $key => $value) { - $rbl_list .= ", reject_rbl_client ". $value; - } - } - unset($rbl_hosts); - - //* If Postgrey is installed, configure it - $greylisting = ''; - if($conf['postgrey']['installed'] == true) { - $greylisting = ', check_recipient_access mysql:/etc/postfix/mysql-virtual_policy_greylist.cf'; - } - - $reject_sender_login_mismatch = ''; - $reject_authenticated_sender_login_mismatch = ''; - if(isset($server_ini_array['mail']['reject_sender_login_mismatch']) && ($server_ini_array['mail']['reject_sender_login_mismatch'] == 'y')) { - $reject_sender_login_mismatch = ', reject_sender_login_mismatch'; - $reject_authenticated_sender_login_mismatch = 'reject_authenticated_sender_login_mismatch, '; - } - - # placeholder includes comment char - $stress_adaptive_placeholder = '#{stress_adaptive} '; - $stress_adaptive = (isset($server_ini_array['mail']['stress_adaptive']) && ($server_ini_array['mail']['stress_adaptive'] == 'y')) ? '' : $stress_adaptive_placeholder; - - $reject_unknown_client_hostname=''; - if (isset($server_ini_array['mail']['reject_unknown']) && ($server_ini_array['mail']['reject_unknown'] == 'client' || $server_ini_array['mail']['reject_unknown'] == 'client_helo')) { - $reject_unknown_client_hostname=',reject_unknown_client_hostname'; - } - $reject_unknown_helo_hostname=''; - if ((!isset($server_ini_array['mail']['reject_unknown'])) || $server_ini_array['mail']['reject_unknown'] == 'helo' || $server_ini_array['mail']['reject_unknown'] == 'client_helo') { - $reject_unknown_helo_hostname=',reject_unknown_helo_hostname'; - } - - unset($server_ini_array); - - $myhostname = str_replace('.','\.',$conf['hostname']); - - $postconf_placeholders = array('{config_dir}' => $config_dir, - '{vmail_mailbox_base}' => $cf['vmail_mailbox_base'], - '{vmail_userid}' => $cf['vmail_userid'], - '{vmail_groupid}' => $cf['vmail_groupid'], - '{rbl_list}' => $rbl_list, - '{greylisting}' => $greylisting, - '{reject_slm}' => $reject_sender_login_mismatch, - '{reject_aslm}' => $reject_authenticated_sender_login_mismatch, - '{myhostname}' => $myhostname, - $stress_adaptive_placeholder => $stress_adaptive, - '{reject_unknown_client_hostname}' => $reject_unknown_client_hostname, - '{reject_unknown_helo_hostname}' => $reject_unknown_helo_hostname, - ); - - $postconf_tpl = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/fedora_postfix.conf.master', 'tpl/fedora_postfix.conf.master'); - $postconf_tpl = strtr($postconf_tpl, $postconf_placeholders); - $postconf_commands = array_filter(explode("\n", $postconf_tpl)); // read and remove empty lines - - //* These postconf commands will be executed on installation only - if($this->is_update == false) { - $postconf_commands = array_merge($postconf_commands, array( - 'myhostname = '.$conf['hostname'], - 'mydestination = '.$conf['hostname'].', localhost, localhost.localdomain', - 'mynetworks = 127.0.0.0/8 [::1]/128' - )); - } - - //* Create the header and body check files - touch($config_dir.'/header_checks'); - touch($config_dir.'/mime_header_checks'); - touch($config_dir.'/nested_header_checks'); - touch($config_dir.'/body_checks'); - - //* Create the mailman files - if(!is_dir('/var/lib/mailman/data')) exec('mkdir -p /var/lib/mailman/data'); - //if(!is_file('/var/lib/mailman/data/aliases')) touch('/var/lib/mailman/data/aliases'); - if(is_file('/var/lib/mailman/data/aliases')) unlink('/var/lib/mailman/data/aliases'); - if(!is_link('/var/lib/mailman/data/aliases')) symlink('/etc/mailman/aliases', '/var/lib/mailman/data/aliases'); - if(!is_dir('/etc/mailman')) mkdir('/etc/mailman'); - if(!is_file('/etc/mailman/aliases')) touch('/etc/mailman/aliases'); - exec('postalias /var/lib/mailman/data/aliases'); - if(!is_file('/etc/mailman/virtual-mailman')) touch('/etc/mailman/virtual-mailman'); - exec('postmap /etc/mailman/virtual-mailman'); - if(!is_file('/var/lib/mailman/data/transport-mailman')) touch('/var/lib/mailman/data/transport-mailman'); - exec('/usr/sbin/postmap /var/lib/mailman/data/transport-mailman'); - - //* Create auxillary postfix conf files - $configfile = 'helo_access'; - if(is_file($config_dir.'/'.$configfile)) { - copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); - chmod($config_dir.'/'.$configfile.'~', 0400); - } - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - $content = strtr($content, $postconf_placeholders); - # todo: look up this server's ip addrs and loop through each - # todo: look up domains hosted on this server and loop through each - wf($config_dir.'/'.$configfile, $content); - - $configfile = 'blacklist_helo'; - if(is_file($config_dir.'/'.$configfile)) { - copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); - chmod($config_dir.'/'.$configfile.'~', 0400); - } - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - $content = strtr($content, $postconf_placeholders); - wf($config_dir.'/'.$configfile, $content); - - //* Make a backup copy of the main.cf file - copy($config_dir.'/main.cf', $config_dir.'/main.cf~'); - - //* Executing the postconf commands - foreach($postconf_commands as $cmd) { - $command = "postconf -e '$cmd'"; - caselog($command." &> /dev/null", __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); - } - - if(!stristr($options, 'dont-create-certs')) { - //* Create the SSL certificate - if(AUTOINSTALL){ - $command = 'cd '.$config_dir.'; ' - ."openssl req -new -subj '/C=".escapeshellcmd($autoinstall['ssl_cert_country'])."/ST=".escapeshellcmd($autoinstall['ssl_cert_state'])."/L=".escapeshellcmd($autoinstall['ssl_cert_locality'])."/O=".escapeshellcmd($autoinstall['ssl_cert_organisation'])."/OU=".escapeshellcmd($autoinstall['ssl_cert_organisation_unit'])."/CN=".escapeshellcmd($autoinstall['ssl_cert_common_name'])."' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509"; - } else { - $command = 'cd '.$config_dir.'; ' - .'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509'; - } - exec($command); - - $command = 'chmod o= '.$config_dir.'/smtpd.key'; - caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); - } - - //** We have to change the permissions of the courier authdaemon directory to make it accessible for maildrop. - $command = 'chmod 755 /var/spool/authdaemon'; - caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); - - //* Changing maildrop lines in posfix master.cf - if(is_file($config_dir.'/master.cf')){ - copy($config_dir.'/master.cf', $config_dir.'/master.cf~'); - } - if(is_file($config_dir.'/master.cf~')){ - exec('chmod 400 '.$config_dir.'/master.cf~'); - } - $configfile = $config_dir.'/master.cf'; - $content = rf($configfile); - // if postfix package is from fedora or centios main repo - $content = str_replace('# flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}', - ' flags=DRhu user='.$cf['vmail_username'].' argv=/usr/bin/maildrop -d ${recipient} ${extension} ${recipient} ${user} ${nexthop} ${sender}', - $content); - - // If postfix package is from centos plus repo - $content = str_replace('# flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}', - ' flags=DRhu user='.$cf['vmail_username'].' argv=/usr/bin/maildrop -d ${recipient} ${extension} ${recipient} ${user} ${nexthop} ${sender}', - $content); - - $content = str_replace(' flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}', - ' flags=DRhu user='.$cf['vmail_username'].' argv=/usr/bin/maildrop -d ${recipient} ${extension} ${recipient} ${user} ${nexthop} ${sender}', - $content); - - - $content = str_replace('#maildrop unix - n n - - pipe', - 'maildrop unix - n n - - pipe', - $content); - - wf($configfile, $content); - - //* Writing the Maildrop mailfilter file - $configfile = 'mailfilter'; - if(is_file($cf['vmail_mailbox_base'].'/.'.$configfile)){ - copy($cf['vmail_mailbox_base'].'/.'.$configfile, $cf['vmail_mailbox_base'].'/.'.$configfile.'~'); - } - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', "tpl/$configfile.master"); - $content = str_replace('{dist_postfix_vmail_mailbox_base}', $cf['vmail_mailbox_base'], $content); - wf($cf['vmail_mailbox_base'].'/.'.$configfile, $content); - - //* Create the directory for the custom mailfilters - $command = 'mkdir '.$cf['vmail_mailbox_base'].'/mailfilters'; - caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - //* Chmod and chown the .mailfilter file - $command = 'chown -R '.$cf['vmail_username'].':'.$cf['vmail_groupname'].' '.$cf['vmail_mailbox_base'].'/.mailfilter'; - caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - $command = 'chmod -R 600 '.$cf['vmail_mailbox_base'].'/.mailfilter'; - caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - } - public function configure_saslauthd() { global $conf; diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index f719fbee3819c2477d6a036749d09ba027b5f50a..83a4b5ffafee0b140530913f8c9bde449dad0b04 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -63,6 +63,9 @@ class installer extends installer_base $this->process_postfix_config( basename($filename, '.master') ); } + //* mysql-verify_recipients.cf + $this->process_postfix_config('mysql-verify_recipients.cf'); + //* Changing mode and group of the new created config files. caselog('chmod o= '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null', __FILE__, __LINE__, 'chmod on mysql-virtual_*.cf*', 'chmod on mysql-virtual_*.cf* failed'); @@ -157,6 +160,7 @@ class installer extends installer_base touch($config_dir.'/mime_header_checks'); touch($config_dir.'/nested_header_checks'); touch($config_dir.'/body_checks'); + touch($config_dir.'/sasl_passwd'); //* Create auxillary postfix conf files $configfile = 'helo_access'; @@ -527,10 +531,10 @@ class installer extends installer_base //* load the powerdns databse dump if($conf['mysql']['admin_password'] == '') { - caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null", + caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' --force '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null", __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in powerdns.sql'); } else { - caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' -p'".$conf['mysql']['admin_password']."' '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null", + caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' -p'".$conf['mysql']['admin_password']."' --force '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null", __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in powerdns.sql'); } diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index b9e3a1c575f8a9edd83c572840bcf796571c54cc..3effb1d10c8cc61af717601cdaece67e784e9444 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -57,55 +57,12 @@ class installer_dist extends installer_base { $this->error("The postfix configuration directory '$config_dir' does not exist."); } - //* mysql-virtual_domains.cf - $this->process_postfix_config('mysql-virtual_domains.cf'); - - //* mysql-virtual_forwardings.cf - $this->process_postfix_config('mysql-virtual_forwardings.cf'); - - //* mysql-virtual_alias_domains.cf - $this->process_postfix_config('mysql-virtual_alias_domains.cf'); - - //* mysql-virtual_alias_maps.cf - $this->process_postfix_config('mysql-virtual_alias_maps.cf'); - - //* mysql-virtual_mailboxes.cf - $this->process_postfix_config('mysql-virtual_mailboxes.cf'); - - //* mysql-virtual_email2email.cf - $this->process_postfix_config('mysql-virtual_email2email.cf'); - - //* mysql-virtual_transports.cf - $this->process_postfix_config('mysql-virtual_transports.cf'); - - //* mysql-virtual_recipient.cf - $this->process_postfix_config('mysql-virtual_recipient.cf'); - - //* mysql-virtual_sender.cf - $this->process_postfix_config('mysql-virtual_sender.cf'); - - //* mysql-virtual_sender_login_maps.cf - $this->process_postfix_config('mysql-virtual_sender_login_maps.cf'); - - //* mysql-virtual_client.cf - $this->process_postfix_config('mysql-virtual_client.cf'); - - //* mysql-virtual_relaydomains.cf - $this->process_postfix_config('mysql-virtual_relaydomains.cf'); - - //* mysql-virtual_relayrecipientmaps.cf - $this->process_postfix_config('mysql-virtual_relayrecipientmaps.cf'); - - //* mysql-virtual_policy_greylist.cf - $this->process_postfix_config('mysql-virtual_policy_greylist.cf'); - - //* mysql-virtual_gids.cf.master - $this->process_postfix_config('mysql-virtual_gids.cf'); - - //* mysql-virtual_uids.cf - $this->process_postfix_config('mysql-virtual_uids.cf'); + //* Install virtual mappings + foreach (glob('tpl/mysql-virtual_*.master') as $filename) { + $this->process_postfix_config( basename($filename, '.master') ); + } - //* mysql-virtual_alias_domains.cf + //* mysql-verify_recipients.cf $this->process_postfix_config('mysql-verify_recipients.cf'); //* postfix-dkim @@ -219,6 +176,7 @@ class installer_dist extends installer_base { touch($config_dir.'/mime_header_checks'); touch($config_dir.'/nested_header_checks'); touch($config_dir.'/body_checks'); + touch($config_dir.'/sasl_passwd'); //* Create the mailman files if(!is_dir('/var/lib/mailman/data')) exec('mkdir -p /var/lib/mailman/data'); diff --git a/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master b/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master index 7e42c8a362b86f9255fbd46aa16c3a546b727a34..c60b50e2fa9aa47e3a9a93b187c701ba7c6d7e34 100644 --- a/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master +++ b/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master @@ -51,7 +51,8 @@ use strict; $sql_select_policy = 'SELECT *,spamfilter_users.id'. ' FROM spamfilter_users LEFT JOIN spamfilter_policy ON spamfilter_users.policy_id=spamfilter_policy.id'. - ' WHERE spamfilter_users.email IN (%k) ORDER BY spamfilter_users.priority DESC'; + ' WHERE spamfilter_users.email IN (%k) AND spamfilter_users.policy_id != 0'. + ' ORDER BY spamfilter_users.priority DESC'; $sql_select_white_black_list = 'SELECT wb FROM spamfilter_wblist'. diff --git a/install/install.php b/install/install.php index 0df226ee10d4cab3407d7341ea9d928130a20b53..b94c1c7f6f78346b3b63ddb4583c766b2d47d7b3 100644 --- a/install/install.php +++ b/install/install.php @@ -146,7 +146,6 @@ include_once 'dist/conf/'.$dist['confid'].'.conf.php'; //** Installer Interface //**************************************************************************************************** $inst = new installer(); -if (!$inst->get_php_version()) die('ISPConfig requires PHP '.$inst->min_php."\n"); $retval=shell_exec("which which"); if (empty($retval)) die ("ISPConfig requires which \n"); @@ -161,8 +160,13 @@ if(!is_writable(dirname(ISPC_LOG_FILE))){ die("ERROR: Cannot write to the ".dirname(ISPC_LOG_FILE)." directory. Are you root or sudo ?\n\n"); } +//** Check for ISPConfig 2.x versions if(is_dir('/root/ispconfig') || is_dir('/home/admispconfig')) { - die('This software cannot be installed on a server wich runs ISPConfig 2.x.'); + if(is_dir('/home/admispconfig')) { + die('This software cannot be installed on a server which runs ISPConfig 2.x.'); + } else { + die('This software cannot be installed on a server which runs ISPConfig 2.x; the presence of the /root/ispconfig/ directory may indicate an ISPConfig 2.x installation, otherwise you can remove or rename it to continue.'); + } } if(is_dir('/usr/local/ispconfig')) { @@ -598,6 +602,9 @@ if(!$issue_asked) { } } +// update acme.sh if installed +$inst->update_acme(); + if($conf['services']['web'] == true) { //** Configure apps vhost swriteln('Configuring Apps vhost'); diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index 3d77443372d00615aa4184c7c37f247246e0200b..6ff32bb785f27dd2c71adb610b23f1a0ce14e992 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -238,6 +238,13 @@ function get_distname() { $distid = 'debian60'; $distbaseid = 'debian'; swriteln("Operating System: Debian 10.0 (Buster) or compatible\n"); + } elseif(substr(trim(file_get_contents('/etc/debian_version')),0,2) == '11') { + $distname = 'Debian'; + $distver = 'Bullseye'; + $distconfid = 'debian110'; + $distid = 'debian60'; + $distbaseid = 'debian'; + swriteln("Operating System: Debian 11.0 (Bullseye) or compatible\n"); } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '/sid')) { $distname = 'Debian'; $distver = 'Testing'; @@ -882,9 +889,8 @@ function get_apps_vhost_port_number() { } /* -* Get the port number of the ISPConfig controlpanel vhost -*/ - + * Check if SSL is anabled in the ISPConfig controlpanel vhost. + */ function is_ispconfig_ssl_enabled() { global $conf; $ispconfig_vhost_file = $conf['apache']['vhost_conf_dir'].'/ispconfig.vhost'; diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index cec9c55b42822b0075dc2d1e65e6434c8ed4fac5..103abaef1909859b45017bde0f9c6bda9174e7e3 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -34,8 +34,7 @@ class installer_base { var $language = 'en'; var $db; public $install_ispconfig_interface = true; - public $is_update = false; // true if it is an update, falsi if it is a new install - public $min_php = '5.4'; // minimal php-version for update / install + public $is_update = false; // true if it is an update, false if it is a new install protected $mailman_group = 'list'; @@ -43,6 +42,30 @@ class installer_base { global $conf; //TODO: maybe $conf should be passed to constructor } + private function install_acme() { + $install_cmd = 'wget -O - https://get.acme.sh | sh'; + $ret = null; + $val = 0; + exec($install_cmd . ' 2>&1', $ret, $val); + + return ($val == 0 ? true : false); + } + + public function update_acme() { + $acme = explode("\n", shell_exec('which /usr/local/ispconfig/server/scripts/acme.sh /root/.acme.sh/acme.sh')); + $acme = reset($acme); + $val = 0; + + if($acme && is_executable($acme)) { + $cmd = $acme . ' --upgrade --auto-upgrade ; ' . $acme . ' --set-default-ca --server letsencrypt'; + $ret = null; + $val = 0; + exec($cmd. ' 2>&1', $ret, $val); + } + + return ($val == 0 ? true : false); + } + //: TODO Implement the translation function and language files for the installer. public function lng($text) { return $text; @@ -151,12 +174,6 @@ class installer_base { } } - //** Detect PHP-Version - public function get_php_version() { - if(version_compare(PHP_VERSION, $this->min_php, '<')) return false; - else return true; - } - public function crypt_password($cleartext_password, $charset = 'UTF-8') { if($charset != 'UTF-8') { $cleartext_password = mb_convert_encoding($cleartext_password, $charset, 'UTF-8'); @@ -674,9 +691,6 @@ class installer_base { if ($verbose){ echo $query ."\n"; } - if(!$this->dbmaster->query($query, $value['db'] . '.software_update_inst', $value['user'], $host)) { - $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); - } $query = "GRANT SELECT, UPDATE(`updated`) ON ?? TO ?@?"; if ($verbose){ @@ -1051,58 +1065,12 @@ class installer_base { $postfix_version = preg_replace('/.*=\s*/', '', $out[0]); unset($out); - //* mysql-virtual_domains.cf - $this->process_postfix_config('mysql-virtual_domains.cf'); - - //* mysql-virtual_forwardings.cf - $this->process_postfix_config('mysql-virtual_forwardings.cf'); - - //* mysql-virtual_alias_domains.cf - $this->process_postfix_config('mysql-virtual_alias_domains.cf'); - - //* mysql-virtual_alias_maps.cf - $this->process_postfix_config('mysql-virtual_alias_maps.cf'); - - //* mysql-virtual_mailboxes.cf - $this->process_postfix_config('mysql-virtual_mailboxes.cf'); - - //* mysql-virtual_email2email.cf - $this->process_postfix_config('mysql-virtual_email2email.cf'); - - //* mysql-virtual_transports.cf - $this->process_postfix_config('mysql-virtual_transports.cf'); - - //* mysql-virtual_recipient.cf - $this->process_postfix_config('mysql-virtual_recipient.cf'); - - //* mysql-virtual_sender.cf - $this->process_postfix_config('mysql-virtual_sender.cf'); - - //* mysql-virtual_sender_login_maps.cf - $this->process_postfix_config('mysql-virtual_sender_login_maps.cf'); - - //* mysql-virtual_client.cf - $this->process_postfix_config('mysql-virtual_client.cf'); - - //* mysql-virtual_relaydomains.cf - $this->process_postfix_config('mysql-virtual_relaydomains.cf'); - - //* mysql-virtual_relayrecipientmaps.cf - $this->process_postfix_config('mysql-virtual_relayrecipientmaps.cf'); - - //* mysql-virtual_outgoing_bcc.cf - $this->process_postfix_config('mysql-virtual_outgoing_bcc.cf'); - - //* mysql-virtual_policy_greylist.cf - $this->process_postfix_config('mysql-virtual_policy_greylist.cf'); - - //* mysql-virtual_gids.cf.master - $this->process_postfix_config('mysql-virtual_gids.cf'); - - //* mysql-virtual_uids.cf - $this->process_postfix_config('mysql-virtual_uids.cf'); + //* Install virtual mappings + foreach (glob('tpl/mysql-virtual_*.master') as $filename) { + $this->process_postfix_config( basename($filename, '.master') ); + } - //* mysql-virtual_alias_domains.cf + //* mysql-verify_recipients.cf $this->process_postfix_config('mysql-verify_recipients.cf'); // test if lmtp if available @@ -1222,6 +1190,12 @@ class installer_base { $content = strtr($content, $postconf_placeholders); $postconf_commands = array_merge($postconf_commands, array_filter(explode("\n", $content))); } + $configfile = 'postfix_custom.conf'; + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/' . $configfile . '.master')) { + $content = file_get_contents($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master'); + $content = strtr($content, $postconf_placeholders); + $postconf_commands = array_merge($postconf_commands, array_filter(explode("\n", $content))); + } // Remove comment lines, these would give fatal errors when passed to postconf. $postconf_commands = array_filter($postconf_commands, function($line) { return preg_match('/^[^#]/', $line); }); @@ -1240,6 +1214,7 @@ class installer_base { touch($config_dir.'/mime_header_checks'); touch($config_dir.'/nested_header_checks'); touch($config_dir.'/body_checks'); + touch($config_dir.'/sasl_passwd'); //* Create the mailman files if(!is_dir('/var/lib/mailman/data')) exec('mkdir -p /var/lib/mailman/data'); @@ -1574,6 +1549,13 @@ class installer_base { } else { copy('tpl/debian_dovecot2.conf.master', $config_dir.'/'.$configfile); } + // Copy custom config file + if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/dovecot_custom.conf.master')) { + if(!@is_dir($config_dir . '/conf.d')) { + mkdir($config_dir . '/conf.d'); + } + copy($conf['ispconfig_install_dir'].'/server/conf-custom/install/dovecot_custom.conf.master', $config_dir.'/conf.d/99-ispconfig-custom-config.conf'); + } replaceLine($config_dir.'/'.$configfile, 'postmaster_address = postmaster@example.com', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); replaceLine($config_dir.'/'.$configfile, 'postmaster_address = webmaster@localhost', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); if(version_compare($dovecot_version, 2.1, '<')) { @@ -1796,11 +1778,18 @@ class installer_base { $new_options[] = $value; } if ($mail_config['reject_sender_login_mismatch'] == 'y') { - array_splice($new_options, 0, 0, array('reject_authenticated_sender_login_mismatch')); - + // insert before permit_mynetworks for ($i = 0; isset($new_options[$i]); $i++) { if ($new_options[$i] == 'permit_mynetworks') { - array_splice($new_options, $i+1, 0, array('reject_sender_login_mismatch')); + array_splice($new_options, $i, 0, array('reject_authenticated_sender_login_mismatch')); + break; + } + } + + // insert before permit_sasl_authenticated + for ($i = 0; isset($new_options[$i]); $i++) { + if ($new_options[$i] == 'permit_sasl_authenticated') { + array_splice($new_options, $i, 0, array('reject_sender_login_mismatch')); break; } } @@ -1822,23 +1811,31 @@ class installer_base { } if(is_user('_rspamd') && is_group('amavis')) { - exec("usermod -G amavis _rspamd"); + exec("usermod -a -G amavis _rspamd"); } elseif(is_user('rspamd') && is_group('amavis')) { - exec("usermod -G amavis rspamd"); + exec("usermod -a -G amavis rspamd"); } if(!is_dir('/etc/rspamd/local.d/')){ mkdir('/etc/rspamd/local.d/', 0755, true); + chmod('/etc/rspamd/local.d/', 0755); + } + + if(!is_dir('/etc/rspamd/local.d/maps.d/')){ + mkdir('/etc/rspamd/local.d/maps.d/', 0755, true); + chmod('/etc/rspamd/local.d/maps.d/', 0755); } if(!is_dir('/etc/rspamd/override.d/')){ mkdir('/etc/rspamd/override.d/', 0755, true); + chmod('/etc/rspamd/override.d/', 0755); } if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) { $mail_config['dkim_path'] = substr($mail_config['dkim_path'], 0, strlen($mail_config['dkim_path'])-1); } $dkim_domains = $this->db->queryAllRecords('SELECT `dkim_selector`, `domain` FROM ?? WHERE `dkim` = ? ORDER BY `domain` ASC', $conf['mysql']['database'] . '.mail_domain', 'y'); + # should move maps to local.d/maps.d/ ? $fpp = fopen('/etc/rspamd/local.d/dkim_domains.map', 'w'); $fps = fopen('/etc/rspamd/local.d/dkim_selectors.map', 'w'); foreach($dkim_domains as $dkim_domain) { @@ -1849,104 +1846,106 @@ class installer_base { fclose($fps); unset($dkim_domains); - $tpl = new tpl(); - $tpl->newTemplate('rspamd_users.conf.master'); - - $whitelist_ips = array(); - $ips = $this->db->queryAllRecords("SELECT * FROM server_ip WHERE server_id = ?", $conf['server_id']); + # look up values for use in template tags + $local_addrs = array(); + $ips = $this->db->queryAllRecords('SELECT `ip_address`, `ip_type` FROM ?? WHERE `server_id` = ?', $conf['mysql']['database'].'.server_ip', $conf['server_id']); if(is_array($ips) && !empty($ips)){ foreach($ips as $ip){ - $whitelist_ips[] = array('ip' => $ip['ip_address']); + $local_addrs[] = array( + 'ip' => $ip['ip_address'], + 'quoted_ip' => "\"".$ip['ip_address']."\",\n" + ); } } - $tpl->setLoop('whitelist_ips', $whitelist_ips); - wf('/etc/rspamd/local.d/users.conf', $tpl->grab()); - - if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_groups.conf.master')) { - exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_groups.conf.master /etc/rspamd/local.d/groups.conf'); - } else { - exec('cp tpl/rspamd_groups.conf.master /etc/rspamd/local.d/groups.conf'); - } - - if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_antivirus.conf.master')) { - exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_antivirus.conf.master /etc/rspamd/local.d/antivirus.conf'); - } else { - exec('cp tpl/rspamd_antivirus.conf.master /etc/rspamd/local.d/antivirus.conf'); - } - - if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_classifier-bayes.conf.master')) { - exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_classifier-bayes.conf.master /etc/rspamd/local.d/classifier-bayes.conf'); - } else { - exec('cp tpl/rspamd_classifier-bayes.conf.master /etc/rspamd/local.d/classifier-bayes.conf'); - } - if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_greylist.conf.master')) { - exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_greylist.conf.master /etc/rspamd/local.d/greylist.conf'); - } else { - exec('cp tpl/rspamd_greylist.conf.master /etc/rspamd/local.d/greylist.conf'); - } - - if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_symbols_antivirus.conf.master')) { - exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_symbols_antivirus.conf.master /etc/rspamd/local.d/antivirus_group.conf'); - } else { - exec('cp tpl/rspamd_symbols_antivirus.conf.master /etc/rspamd/local.d/antivirus_group.conf'); - } - - if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_rbl.conf.master')) { - exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_rbl.conf.master /etc/rspamd/override.d/rbl_group.conf'); - } else { - exec('cp tpl/rspamd_override_rbl.conf.master /etc/rspamd/override.d/rbl_group.conf'); - } + # local.d templates with template tags + # note: ensure these template files are in server/conf/ and symlinked in install/tpl/ + $local_d = array( + 'dkim_signing.conf', # dkim_signing.conf no longer uses template tags, could move below + 'options.inc', + 'redis.conf', + 'classifier-bayes.conf', + ); + foreach ($local_d as $f) { + $tpl = new tpl(); + if (file_exists($conf['ispconfig_install_dir']."/server/conf-custom/install/rspamd_${f}.master")) { + $tpl->newTemplate($conf['ispconfig_install_dir']."/server/conf-custom/install/rspamd_${f}.master"); + } else { + $tpl->newTemplate("rspamd_${f}.master"); + } - if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_surbl.conf.master')) { - exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_surbl.conf.master /etc/rspamd/override.d/surbl_group.conf'); - } else { - exec('cp tpl/rspamd_override_surbl.conf.master /etc/rspamd/override.d/surbl_group.conf'); - } + $tpl->setVar('dkim_path', $mail_config['dkim_path']); + $tpl->setVar('rspamd_redis_servers', $mail_config['rspamd_redis_servers']); + $tpl->setVar('rspamd_redis_password', $mail_config['rspamd_redis_password']); + $tpl->setVar('rspamd_redis_bayes_servers', $mail_config['rspamd_redis_bayes_servers']); + $tpl->setVar('rspamd_redis_bayes_password', $mail_config['rspamd_redis_bayes_password']); + if(count($local_addrs) > 0) { + $tpl->setLoop('local_addrs', $local_addrs); + } - if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_mx_check.conf.master')) { - exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_mx_check.conf.master /etc/rspamd/local.d/mx_check.conf'); - } else { - exec('cp tpl/rspamd_mx_check.conf.master /etc/rspamd/local.d/mx_check.conf'); + wf("/etc/rspamd/local.d/${f}", $tpl->grab()); } - if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_redis.conf.master')) { - exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_redis.conf.master /etc/rspamd/local.d/redis.conf'); - } else { - exec('cp tpl/rspamd_redis.conf.master /etc/rspamd/local.d/redis.conf'); - } - if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_milter_headers.conf.master')) { - exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_milter_headers.conf.master /etc/rspamd/local.d/milter_headers.conf'); - } else { - exec('cp tpl/rspamd_milter_headers.conf.master /etc/rspamd/local.d/milter_headers.conf'); + # local.d templates without template tags + $local_d = array( + 'groups.conf', + 'antivirus.conf', + 'mx_check.conf', + 'milter_headers.conf', + 'neural.conf', + 'neural_group.conf', + 'users.conf', + 'groups.conf', + 'arc.conf', + ); + foreach ($local_d as $f) { + if(file_exists($conf['ispconfig_install_dir']."/server/conf-custom/install/rspamd_${f}.master")) { + exec('cp '.$conf['ispconfig_install_dir']."/server/conf-custom/install/rspamd_${f}.master /etc/rspamd/local.d/${f}"); + } else { + exec("cp tpl/rspamd_${f}.master /etc/rspamd/local.d/${f}"); + } } - if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_options.inc.master')) { - exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_options.inc.master /etc/rspamd/local.d/options.inc'); - } else { - exec('cp tpl/rspamd_options.inc.master /etc/rspamd/local.d/options.inc'); + # override.d templates without template tags + $override_d = array( + 'rbl_group.conf', + 'surbl_group.conf', + ); + foreach ($override_d as $f) { + if(file_exists($conf['ispconfig_install_dir']."/server/conf-custom/install/rspamd_${f}.master")) { + exec('cp '.$conf['ispconfig_install_dir']."/server/conf-custom/install/rspamd_${f}.master /etc/rspamd/override.d/${f}"); + } else { + exec("cp tpl/rspamd_${f}.master /etc/rspamd/override.d/${f}"); + } } - if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_neural.conf.master')) { - exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_neural.conf.master /etc/rspamd/local.d/neural.conf'); - } else { - exec('cp tpl/rspamd_neural.conf.master /etc/rspamd/local.d/neural.conf'); + # local.d/maps.d templates without template tags + $maps_d = array( + 'dkim_whitelist.inc.ispc', + 'dmarc_whitelist.inc.ispc', + 'spf_dkim_whitelist.inc.ispc', + 'spf_whitelist.inc.ispc', + ); + foreach ($maps_d as $f) { + if(file_exists($conf['ispconfig_install_dir']."/server/conf-custom/install/rspamd_${f}.master")) { + exec('cp '.$conf['ispconfig_install_dir']."/server/conf-custom/install/rspamd_${f}.master /etc/rspamd/local.d/maps.d/${f}"); + } else { + exec("cp tpl/rspamd_${f}.master /etc/rspamd/local.d/maps.d/${f}"); + } } - if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_neural_group.conf.master')) { - exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_neural_group.conf.master /etc/rspamd/local.d/neural_group.conf'); - } else { - exec('cp tpl/rspamd_neural_group.conf.master /etc/rspamd/local.d/neural_group.conf'); + # rename rspamd templates we no longer use + if(file_exists("/etc/rspamd/local.d/greylist.conf")) { + rename("/etc/rspamd/local.d/greylist.conf", "/etc/rspamd/local.d/greylist.old"); } - $tpl = new tpl(); - $tpl->newTemplate('rspamd_dkim_signing.conf.master'); - $tpl->setVar('dkim_path', $mail_config['dkim_path']); - wf('/etc/rspamd/local.d/dkim_signing.conf', $tpl->grab()); - - exec('chmod a+r /etc/rspamd/local.d/* /etc/rspamd/override.d/*'); + exec('chmod a+r /etc/rspamd/local.d/* /etc/rspamd/local.d/maps.d/* /etc/rspamd/override.d/*'); + # protect passwords in these files + exec('chgrp _rspamd /etc/rspamd/local.d/redis.conf /etc/rspamd/local.d/classifier-bayes.conf /etc/rspamd/local.d/worker-controller.inc'); + exec('chmod 640 /etc/rspamd/local.d/redis.conf /etc/rspamd/local.d/classifier-bayes.conf /etc/rspamd/local.d/worker-controller.inc'); + # unneccesary, since this was done above? $command = 'usermod -a -G amavis _rspamd'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); @@ -1970,7 +1969,11 @@ class installer_base { unset($server_ini_string); $tpl = new tpl(); - $tpl->newTemplate('rspamd_worker-controller.inc.master'); + if (file_exists($conf['ispconfig_install_dir']."/server/conf-custom/install/rspamd_worker-controller.inc.master")) { + $tpl->newTemplate($conf['ispconfig_install_dir']."/server/conf-custom/install/rspamd_worker-controller.inc.master"); + } else { + $tpl->newTemplate("rspamd_worker-controller.inc.master"); + } $rspamd_password = $mail_config['rspamd_password']; $crypted_password = trim(exec('rspamadm pw -p ' . escapeshellarg($rspamd_password))); if($crypted_password) { @@ -2085,17 +2088,17 @@ class installer_base { } //* Create the ISPConfig database user in the local database - $query = "GRANT ALL ON ?? TO ?@'localhost'"; - if(!$this->db->query($query, $conf['powerdns']['database'] . '.*', $conf['mysql']['ispconfig_user'])) { + $query = "GRANT ALL ON ??.* TO ?@?"; + if(!$this->db->query($query, $conf['powerdns']['database'], $conf['mysql']['ispconfig_user'], 'localhost')) { $this->error('Unable to create user for powerdns database Error: '.$this->db->errorMessage); } //* load the powerdns databse dump if($conf['mysql']['admin_password'] == '') { - caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null", + caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' --force '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null", __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in powerdns.sql'); } else { - caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' -p'".$conf['mysql']['admin_password']."' '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null", + caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' -p'".$conf['mysql']['admin_password']."' --force '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null", __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in powerdns.sql'); } @@ -2585,7 +2588,7 @@ class installer_base { $tpl->setVar('apps_vhost_dir',$conf['web']['website_basedir'].'/apps'); $tpl->setVar('apps_vhost_basedir',$conf['web']['website_basedir']); $tpl->setVar('apps_vhost_servername',$apps_vhost_servername); - if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { + if(is_file($conf['ispconfig_install_dir'].'/interface/ssl/ispserver.crt') && is_file($conf['ispconfig_install_dir'].'/interface/ssl/ispserver.key')) { $tpl->setVar('ssl_comment',''); } else { $tpl->setVar('ssl_comment','#'); @@ -2668,6 +2671,15 @@ class installer_base { // Dont just copy over the virtualhost template but add some custom settings $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/nginx_apps.vhost.master', 'tpl/nginx_apps.vhost.master'); + // Enable SSL if a cert is in place. + if(is_file($conf['ispconfig_install_dir'].'/interface/ssl/ispserver.crt') && is_file($conf['ispconfig_install_dir'].'/interface/ssl/ispserver.key')) { + $content = str_replace('{ssl_on}', 'ssl http2', $content); + $content = str_replace('{ssl_comment}', '', $content); + } else { + $content = str_replace('{ssl_on}', '', $content); + $content = str_replace('{ssl_comment}', '#', $content); + } + if($conf['web']['apps_vhost_ip'] == '_default_'){ $apps_vhost_ip = ''; } else { @@ -2710,10 +2722,6 @@ class installer_base { $content = str_replace('{use_tcp}', $use_tcp, $content); $content = str_replace('{use_socket}', $use_socket, $content); - // SSL in apps vhost is off by default. Might change later. - $content = str_replace('{ssl_on}', '', $content); - $content = str_replace('{ssl_comment}', '#', $content); - // Fix socket path on PHP 7 systems if(file_exists('/var/run/php/php7.0-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.0-fpm.sock', $content); if(file_exists('/var/run/php/php7.1-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.1-fpm.sock', $content); @@ -2816,7 +2824,7 @@ class installer_base { if(@is_link($vhost_conf_enabled_dir.'/' . $use_symlink)) { unlink($vhost_conf_enabled_dir.'/' . $use_symlink); } - if(!@is_link($vhost_conf_enabled_dir.'' . $use_symlink)) { + if(!@is_link($vhost_conf_enabled_dir.'/' . $use_symlink)) { symlink($vhost_conf_dir.'/' . $use_name, $vhost_conf_enabled_dir.'/' . $use_symlink); } } @@ -2887,8 +2895,13 @@ class installer_base { $check_acme_file = $acme_cert_dir . '/cert.pem'; } } - swriteln('Using certificate path ' . $acme_cert_dir); + + if(!is_dir($conf['ispconfig_log_dir'])) { + mkdir($conf['ispconfig_log_dir'], 0755, true); + } + $acme_log = $conf['ispconfig_log_dir'] . '/acme.log'; + $ip_address_match = false; if(!(($svr_ip4 && in_array($svr_ip4, $dns_ips)) || ($svr_ip6 && in_array($svr_ip6, $dns_ips)))) { swriteln('Server\'s public ip(s) (' . $svr_ip4 . ($svr_ip6 ? ', ' . $svr_ip6 : '') . ') not found in A/AAAA records for ' . $hostname . ': ' . implode(', ', $dns_ips)); @@ -2899,22 +2912,36 @@ class installer_base { $ip_address_match = true; } + // Get subject and issuer of ispserver.crt to check if it is self-signed cert + if (file_exists($ssl_crt_file)) { + $crt_subject = exec("openssl x509 -in ".escapeshellarg($ssl_crt_file)." -inform PEM -noout -subject"); + $crt_issuer = exec("openssl x509 -in ".escapeshellarg($ssl_crt_file)." -inform PEM -noout -issuer"); + } - if ((!@is_dir($acme_cert_dir) || !@file_exists($check_acme_file) || !@file_exists($ssl_crt_file) || md5_file($check_acme_file) != md5_file($ssl_crt_file)) && $ip_address_match == true) { + if ((@file_exists($ssl_crt_file) && ($crt_subject == $crt_issuer)) || (!@is_dir($acme_cert_dir) || !@file_exists($check_acme_file) || !@file_exists($ssl_crt_file) || md5_file($check_acme_file) != md5_file($ssl_crt_file)) && $ip_address_match == true) { // This script is needed earlier to check and open http port 80 or standalone might fail // Make executable and temporary symlink latest letsencrypt pre, post and renew hook script before install if(file_exists(ISPC_INSTALL_ROOT . '/server/scripts/letsencrypt_pre_hook.sh') && !file_exists('/usr/local/bin/letsencrypt_pre_hook.sh')) { + if(is_link('/usr/local/bin/letsencrypt_pre_hook.sh')) { + unlink('/usr/local/bin/letsencrypt_pre_hook.sh'); + } symlink(ISPC_INSTALL_ROOT . '/server/scripts/letsencrypt_pre_hook.sh', '/usr/local/bin/letsencrypt_pre_hook.sh'); chown('/usr/local/bin/letsencrypt_pre_hook.sh', 'root'); chmod('/usr/local/bin/letsencrypt_pre_hook.sh', 0700); } if(file_exists(ISPC_INSTALL_ROOT . '/server/scripts/letsencrypt_post_hook.sh') && !file_exists('/usr/local/bin/letsencrypt_post_hook.sh')) { + if(is_link('/usr/local/bin/letsencrypt_post_hook.sh')) { + unlink('/usr/local/bin/letsencrypt_post_hook.sh'); + } symlink(ISPC_INSTALL_ROOT . '/server/scripts/letsencrypt_post_hook.sh', '/usr/local/bin/letsencrypt_post_hook.sh'); chown('/usr/local/bin/letsencrypt_post_hook.sh', 'root'); chmod('/usr/local/bin/letsencrypt_post_hook.sh', 0700); } if(file_exists(ISPC_INSTALL_ROOT . '/server/scripts/letsencrypt_renew_hook.sh') && !file_exists('/usr/local/bin/letsencrypt_renew_hook.sh')) { + if(is_link('/usr/local/bin/letsencrypt_renew_hook.sh')) { + unlink('/usr/local/bin/letsencrypt_renew_hook.sh'); + } symlink(ISPC_INSTALL_ROOT . '/server/scripts/letsencrypt_renew_hook.sh', '/usr/local/bin/letsencrypt_renew_hook.sh'); chown('/usr/local/bin/letsencrypt_renew_hook.sh', 'root'); chmod('/usr/local/bin/letsencrypt_renew_hook.sh', 0700); @@ -2934,13 +2961,31 @@ class installer_base { } // Get the default LE client name and version - $le_client = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot')); + $le_client = explode("\n", shell_exec('which certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot letsencrypt')); $le_client = reset($le_client); // Check for Neilpang acme.sh as well $acme = explode("\n", shell_exec('which /usr/local/ispconfig/server/scripts/acme.sh /root/.acme.sh/acme.sh')); $acme = reset($acme); + if((!$acme || !is_executable($acme)) && (!$le_client || !is_executable($le_client))) { + $success = $this->install_acme(); + if(!$success) { + swriteln('Failed installing acme.sh. Will not be able to issue certificate during install.'); + } else { + $acme = explode("\n", shell_exec('which /usr/local/ispconfig/server/scripts/acme.sh /root/.acme.sh/acme.sh')); + $acme = reset($acme); + if($acme && is_executable($acme)) { + swriteln('Installed acme.sh and using it for certificate creation during install.'); + + // we do this even on install to enable automatic updates + $this->update_acme(); + } else { + swriteln('Failed installing acme.sh. Will not be able to issue certificate during install.'); + } + } + } + $restore_conf_symlink = false; // we only need this for apache, so use fixed conf index @@ -2970,44 +3015,73 @@ class installer_base { $issued_successfully = false; + // Backup existing ispserver ssl files + if(file_exists($ssl_crt_file) || is_link($ssl_crt_file)) { + copy($ssl_crt_file, $ssl_crt_file . '-temporary.bak'); + } + if(file_exists($ssl_key_file) || is_link($ssl_key_file)) { + copy($ssl_key_file, $ssl_key_file . '-temporary.bak'); + } + if(file_exists($ssl_pem_file) || is_link($ssl_pem_file)) { + copy($ssl_pem_file, $ssl_pem_file . '-temporary.bak'); + } + // Attempt to use Neilpang acme.sh first, as it is now the preferred LE client if (is_executable($acme)) { + $acme_cert_dir = dirname($acme) . '/' . $hostname; + + swriteln('acme.sh is installed, overriding certificate path to use ' . $acme_cert_dir); + + # acme.sh does not set umask, resulting in incorrect permissions (ispconfig issue #6015) + $old_umask = umask(0022); + + // Switch from zerossl to letsencrypt CA + exec("$acme --set-default-ca --server letsencrypt"); $out = null; $ret = null; if($conf['nginx']['installed'] == true || $conf['apache']['installed'] == true) { - exec("$acme --issue -w /usr/local/ispconfig/interface/acme -d " . escapeshellarg($hostname) . " $renew_hook", $out, $ret); + exec("$acme --issue --log $acme_log -w /usr/local/ispconfig/interface/acme -d " . escapeshellarg($hostname) . " $renew_hook", $out, $ret); } // Else, it is not webserver, so we use standalone else { - exec("$acme --issue --standalone -d " . escapeshellarg($hostname) . " $hook", $out, $ret); + exec("$acme --issue --log $acme_log --standalone -d " . escapeshellarg($hostname) . " $hook", $out, $ret); } if($ret == 0 || ($ret == 2 && file_exists($check_acme_file))) { // acme.sh returns with 2 on issue for already existing certificate - - // Backup existing ispserver ssl files - if(file_exists($ssl_crt_file) || is_link($ssl_crt_file)) { - rename($ssl_crt_file, $ssl_crt_file . '-' . $date->format('YmdHis') . '.bak'); - } - if(file_exists($ssl_key_file) || is_link($ssl_key_file)) { - rename($ssl_key_file, $ssl_key_file . '-' . $date->format('YmdHis') . '.bak'); - } - if(file_exists($ssl_pem_file) || is_link($ssl_pem_file)) { - rename($ssl_pem_file, $ssl_pem_file . '-' . $date->format('YmdHis') . '.bak'); - } - $check_acme_file = $ssl_crt_file; // Define LE certs name and path, then install them //$acme_cert = "--cert-file $acme_cert_dir/cert.pem"; $acme_key = "--key-file " . escapeshellarg($ssl_key_file); $acme_chain = "--fullchain-file " . escapeshellarg($ssl_crt_file); - exec("$acme --install-cert -d " . escapeshellarg($hostname) . " $acme_key $acme_chain"); + exec("$acme --install-cert --log $acme_log -d " . escapeshellarg($hostname) . " $acme_key $acme_chain"); $issued_successfully = true; + umask($old_umask); + + // Make temporary backup of self-signed certs permanent + if(file_exists($ssl_crt_file.'-temporary.bak') || is_link($ssl_crt_file.'-temporary.bak')) + rename($ssl_crt_file.'-temporary.bak', $ssl_crt_file.'-'.$date->format('YmdHis').'.bak'); + if(file_exists($ssl_key_file.'-temporary.bak') || is_link($ssl_key_file.'-temporary.bak')) + rename($ssl_key_file.'-temporary.bak', $ssl_key_file.'-'.$date->format('YmdHis').'.bak'); + if(file_exists($ssl_pem_file.'-temporary.bak') || is_link($ssl_pem_file.'-temporary.bak')) + rename($ssl_pem_file.'-temporary.bak', $ssl_pem_file.'-'.$date->format('YmdHis').'.bak'); + } else { swriteln('Issuing certificate via acme.sh failed. Please check that your hostname can be verified by letsencrypt'); + + umask($old_umask); + + // Restore temporary backup of self-signed certs + if(file_exists($ssl_crt_file.'-temporary.bak') || is_link($ssl_crt_file.'-temporary.bak')) + rename($ssl_crt_file.'-temporary.bak', $ssl_crt_file); + if(file_exists($ssl_key_file.'-temporary.bak') || is_link($ssl_key_file.'-temporary.bak')) + rename($ssl_key_file.'-temporary.bak', $ssl_key_file); + if(file_exists($ssl_pem_file.'-temporary.bak') || is_link($ssl_pem_file.'-temporary.bak')) + rename($ssl_pem_file.'-temporary.bak', $ssl_pem_file); + } // Else, we attempt to use the official LE certbot client certbot } else { @@ -3039,24 +3113,31 @@ class installer_base { if($ret == 0) { // certbot returns with 0 on issue for already existing certificate - // Backup existing ispserver ssl files - if(file_exists($ssl_crt_file) || is_link($ssl_crt_file)) { - rename($ssl_crt_file, $ssl_crt_file . '-' . $date->format('YmdHis') . '.bak'); - } - if(file_exists($ssl_key_file) || is_link($ssl_key_file)) { - rename($ssl_key_file, $ssl_key_file . '-' . $date->format('YmdHis') . '.bak'); - } - if(file_exists($ssl_pem_file) || is_link($ssl_pem_file)) { - rename($ssl_pem_file, $ssl_pem_file . '-' . $date->format('YmdHis') . '.bak'); - } - $acme_cert_dir = '/etc/letsencrypt/live/' . $hostname; symlink($acme_cert_dir . '/fullchain.pem', $ssl_crt_file); symlink($acme_cert_dir . '/privkey.pem', $ssl_key_file); $issued_successfully = true; + + // Make temporary backup of self-signed certs permanent + if(file_exists($ssl_crt_file.'-temporary.bak') || is_link($ssl_crt_file.'-temporary.bak')) + rename($ssl_crt_file.'-temporary.bak', $ssl_crt_file.'-'.$date->format('YmdHis').'.bak'); + if(file_exists($ssl_key_file.'-temporary.bak') || is_link($ssl_key_file.'-temporary.bak')) + rename($ssl_key_file.'-temporary.bak', $ssl_key_file.'-'.$date->format('YmdHis').'.bak'); + if(file_exists($ssl_pem_file.'-temporary.bak') || is_link($ssl_pem_file.'-temporary.bak')) + rename($ssl_pem_file.'-temporary.bak', $ssl_pem_file.'-'.$date->format('YmdHis').'.bak'); + } else { swriteln('Issuing certificate via certbot failed. Please check log files and make sure that your hostname can be verified by letsencrypt'); + + // Restore temporary backup of self-signed certs + if(file_exists($ssl_crt_file.'-temporary.bak') || is_link($ssl_crt_file.'-temporary.bak')) + rename($ssl_crt_file.'-temporary.bak', $ssl_crt_file); + if(file_exists($ssl_key_file.'-temporary.bak') || is_link($ssl_key_file.'-temporary.bak')) + rename($ssl_key_file.'-temporary.bak', $ssl_key_file); + if(file_exists($ssl_pem_file.'-temporary.bak') || is_link($ssl_pem_file.'-temporary.bak')) + rename($ssl_pem_file.'-temporary.bak', $ssl_pem_file); + } } else { swriteln('Did not find any valid acme client (acme.sh or certbot)'); @@ -3084,17 +3165,11 @@ class installer_base { } // We can still use the old self-signed method - $ssl_pw = substr(md5(mt_rand()), 0, 6); - exec("openssl genrsa -des3 -passout pass:$ssl_pw -out $ssl_key_file 4096"); + $openssl_cmd = 'openssl req -nodes -newkey rsa:4096 -x509 -days 3650 -keyout ' . escapeshellarg($ssl_key_file) . ' -out ' . escapeshellarg($ssl_crt_file); if(AUTOINSTALL){ - exec("openssl req -new -passin pass:$ssl_pw -passout pass:$ssl_pw -subj '/C=".escapeshellcmd($autoinstall['ssl_cert_country'])."/ST=".escapeshellcmd($autoinstall['ssl_cert_state'])."/L=".escapeshellcmd($autoinstall['ssl_cert_locality'])."/O=".escapeshellcmd($autoinstall['ssl_cert_organisation'])."/OU=".escapeshellcmd($autoinstall['ssl_cert_organisation_unit'])."/CN=".escapeshellcmd($autoinstall['ssl_cert_common_name'])."' -key $ssl_key_file -out $ssl_csr_file"); - } else { - exec("openssl req -new -passin pass:$ssl_pw -passout pass:$ssl_pw -key $ssl_key_file -out $ssl_csr_file"); + $openssl_cmd .= ' -subj ' . escapeshellarg('/C=' . $autoinstall['ssl_cert_country'] . '/ST=' . $autoinstall['ssl_cert_state'] . '/L=' . $autoinstall['ssl_cert_locality'] . '/O=' . $autoinstall['ssl_cert_organisation'] . '/OU=' . $autoinstall['ssl_cert_organisation_unit'] . '/CN=' . $autoinstall['ssl_cert_common_name']); } - exec("openssl req -x509 -passin pass:$ssl_pw -passout pass:$ssl_pw -key $ssl_key_file -in $ssl_csr_file -out $ssl_crt_file -days 3650"); - exec("openssl rsa -passin pass:$ssl_pw -in $ssl_key_file -out $ssl_key_file.insecure"); - rename($ssl_key_file, $ssl_key_file.'.secure'); - rename($ssl_key_file.'.insecure', $ssl_key_file); + exec($openssl_cmd); } // Build ispserver.pem file and chmod it @@ -3509,7 +3584,7 @@ class installer_base { $content = str_replace('{vhost_port}', $conf['nginx']['vhost_port'], $content); if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { - $content = str_replace('{ssl_on}', 'ssl', $content); + $content = str_replace('{ssl_on}', 'ssl http2', $content); $content = str_replace('{ssl_comment}', '', $content); $content = str_replace('{fastcgi_ssl}', 'on', $content); } else { diff --git a/install/lib/update.lib.php b/install/lib/update.lib.php index 33b89786a681bef63233494817cfec4a13ddaebf..d88d64d6cd414f85387f10882b979bf44fbc7e6e 100644 --- a/install/lib/update.lib.php +++ b/install/lib/update.lib.php @@ -473,12 +473,22 @@ function checkAndRenameCustomTemplates($default_prompt='no') { '/usr/local/ispconfig/server/conf-custom/install', ); + $override_templates = array( + 'postfix_custom.conf.master', + 'dovecot_custom.conf.master', + ); + $found_templates = array(); + $found_override_templates = array(); foreach ($template_directories as $dir) { if (!is_dir($dir)) { continue; } foreach (glob("$dir/*.master") as $f) { if (is_file($f)) { - $found_templates[] = $f; + if (in_array( basename($f), $override_templates )) { + $found_override_templates[] = $f; + } else { + $found_templates[] = $f; + } } } } @@ -501,6 +511,11 @@ function checkAndRenameCustomTemplates($default_prompt='no') { } } + if (count($found_override_templates) > 0) { + echo "The following local config override templates were found, be sure to incorporate upstream changes if needed:\n\n"; + echo implode("\n", $found_override_templates) . "\n\n"; + } + return $ret; } diff --git a/install/patches/upd_0094.php b/install/patches/upd_0094.php new file mode 100644 index 0000000000000000000000000000000000000000..304828931e7a10f08f022664c1ab861b94ad4d40 --- /dev/null +++ b/install/patches/upd_0094.php @@ -0,0 +1,17 @@ +<?php + +if(!defined('INSTALLER_RUN')) die('Patch update file access violation.'); + +class upd_0094 extends installer_patch_update { + + public function onBeforeSQL() { + global $inst; + + // Remove any duplicate mail_forwardings prior to adding unique key + //$inst->db->query("DELETE FROM mail_forwarding WHERE forwarding_id NOT IN (SELECT MIN(forwarding_id) FROM mail_forwarding GROUP BY source)"); + + // Remove any duplicate mail_transports prior to adding unique key + $inst->db->query("DELETE FROM mail_transport WHERE transport_id NOT IN (SELECT MIN(transport_id) FROM mail_transport GROUP BY domain, server_id)"); + } + +} diff --git a/install/sql/incremental/upd_0092.sql b/install/sql/incremental/upd_0092.sql new file mode 100644 index 0000000000000000000000000000000000000000..a12f9d482b0a58f71639d52a6dba96c3f0c17b4a --- /dev/null +++ b/install/sql/incremental/upd_0092.sql @@ -0,0 +1,8 @@ +-- drop old php column because new installations don't have them (fails in multi-server) +ALTER TABLE `web_domain` DROP COLUMN `fastcgi_php_version`; + +-- add php_fpm_socket_dir column to server_php +ALTER TABLE `server_php` ADD `php_fpm_socket_dir` varchar(255) DEFAULT NULL AFTER `php_fpm_pool_dir`; + +-- fix #5939 +UPDATE `ftp_user` SET `expires` = NULL WHERE `expires` = '0000-00-00 00:00:00'; diff --git a/install/sql/incremental/upd_0093.sql b/install/sql/incremental/upd_0093.sql new file mode 100644 index 0000000000000000000000000000000000000000..96c5307f0ed22c0bda2651b41919f66af1a530a2 --- /dev/null +++ b/install/sql/incremental/upd_0093.sql @@ -0,0 +1,25 @@ +ALTER TABLE `remote_user` MODIFY `remote_password` VARCHAR(200) NOT NULL DEFAULT ''; + +ALTER TABLE `client` ADD COLUMN `limit_mail_wblist` INT(11) NOT NULL DEFAULT '0' AFTER `limit_mailrouting`; +ALTER TABLE `client_template` ADD COLUMN `limit_mail_wblist` INT(11) NOT NULL DEFAULT '0' AFTER `limit_mailrouting`; + +ALTER TABLE mail_access DROP CONSTRAINT `server_id`; +SET SESSION old_alter_table=1; +ALTER IGNORE TABLE mail_access ADD UNIQUE KEY `unique_source` (`server_id`,`source`,`type`); +SET SESSION old_alter_table=0; + +ALTER TABLE mail_domain ADD COLUMN `relay_host` varchar(255) NOT NULL default '' AFTER `dkim_public`, + ADD COLUMN `relay_user` varchar(255) NOT NULL default '' AFTER `relay_host`, + ADD COLUMN `relay_pass` varchar(255) NOT NULL default '' AFTER `relay_user`; +-- Purge apps & addons installer (#5795) +DROP TABLE `software_package`; +DROP TABLE `software_repo`; +DROP TABLE `software_update`; +DROP TABLE `software_update_inst`; + +-- Brexit +UPDATE `country` SET `eu` = 'n' WHERE `iso` = 'GB'; + +-- Add limit for per domain relaying +ALTER TABLE `client` ADD `limit_relayhost` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `limit_spamfilter_policy`; +ALTER TABLE `client_template` ADD `limit_relayhost` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `limit_spamfilter_policy`; diff --git a/install/sql/incremental/upd_0094.sql b/install/sql/incremental/upd_0094.sql new file mode 100644 index 0000000000000000000000000000000000000000..2206658555b653d3bd4600e082faddbbb5b18816 --- /dev/null +++ b/install/sql/incremental/upd_0094.sql @@ -0,0 +1,20 @@ +-- Add column for email backup limit (#5732) +ALTER TABLE `client_template` ADD `limit_mail_backup` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'y' AFTER `limit_spamfilter_policy`; +ALTER TABLE `client` ADD `limit_mail_backup` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'y' AFTER `limit_spamfilter_policy`; + +-- default spamfilter_users.policy_id to 0 +ALTER TABLE `spamfilter_users` ALTER `policy_id` SET DEFAULT 0; + +-- mail_forwarding.source must be unique +ALTER TABLE `mail_forwarding` DROP KEY `server_id`; +ALTER TABLE `mail_forwarding` ADD KEY `server_id` (`server_id`, `source`); + +-- Purge apps & addons installer (#5795) - second time due to syntax error in 0093 +DROP TABLE IF EXISTS `software_package`; +DROP TABLE IF EXISTS `software_repo`; +DROP TABLE IF EXISTS `software_update`; +DROP TABLE IF EXISTS `software_update_inst`; + +-- mail_transport.domain must be unique +ALTER TABLE `mail_transport` DROP KEY `server_id_2`; +ALTER TABLE `mail_transport` ADD UNIQUE KEY `server_id_2` (`server_id`, `domain`); diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index a12f9d482b0a58f71639d52a6dba96c3f0c17b4a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -1,8 +0,0 @@ --- drop old php column because new installations don't have them (fails in multi-server) -ALTER TABLE `web_domain` DROP COLUMN `fastcgi_php_version`; - --- add php_fpm_socket_dir column to server_php -ALTER TABLE `server_php` ADD `php_fpm_socket_dir` varchar(255) DEFAULT NULL AFTER `php_fpm_pool_dir`; - --- fix #5939 -UPDATE `ftp_user` SET `expires` = NULL WHERE `expires` = '0000-00-00 00:00:00'; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 0f10d59ac6297856b7530ffbb9058a808b8dbd16..51106cc18351fa805425f8d2109bda4433ddbc6b 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -178,12 +178,15 @@ CREATE TABLE `client` ( `limit_mailforward` int(11) NOT NULL DEFAULT '-1', `limit_mailcatchall` int(11) NOT NULL DEFAULT '-1', `limit_mailrouting` int(11) NOT NULL DEFAULT '0', + `limit_mail_wblist` int(11) NOT NULL DEFAULT '0', `limit_mailfilter` int(11) NOT NULL DEFAULT '-1', `limit_fetchmail` int(11) NOT NULL DEFAULT '-1', `limit_mailquota` int(11) NOT NULL DEFAULT '-1', `limit_spamfilter_wblist` int(11) NOT NULL DEFAULT '0', `limit_spamfilter_user` int(11) NOT NULL DEFAULT '0', `limit_spamfilter_policy` int(11) NOT NULL DEFAULT '0', + `limit_mail_backup` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'y', + `limit_relayhost` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n', `default_xmppserver` int(11) unsigned NOT NULL DEFAULT '1', `xmpp_servers` text, `limit_xmpp_domain` int(11) NOT NULL DEFAULT '-1', @@ -309,12 +312,15 @@ CREATE TABLE `client_template` ( `limit_mailforward` int(11) NOT NULL default '-1', `limit_mailcatchall` int(11) NOT NULL default '-1', `limit_mailrouting` int(11) NOT NULL default '0', + `limit_mail_wblist` int(11) NOT NULL default '0', `limit_mailfilter` int(11) NOT NULL default '-1', `limit_fetchmail` int(11) NOT NULL default '-1', `limit_mailquota` int(11) NOT NULL default '-1', `limit_spamfilter_wblist` int(11) NOT NULL default '0', `limit_spamfilter_user` int(11) NOT NULL default '0', `limit_spamfilter_policy` int(11) NOT NULL default '0', + `limit_mail_backup` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'y', + `limit_relayhost` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n', `default_xmppserver` int(11) unsigned NOT NULL DEFAULT '1', `xmpp_servers` text, `limit_xmpp_domain` int(11) NOT NULL DEFAULT '-1', @@ -820,7 +826,7 @@ CREATE TABLE `mail_access` ( `type` set('recipient','sender','client') NOT NULL DEFAULT 'recipient', `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`access_id`), - KEY `server_id` (`server_id`,`source`) + UNIQUE KEY `unique_source` (`server_id`,`source`,`type`) ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -882,6 +888,9 @@ CREATE TABLE `mail_domain` ( `dkim_selector` varchar(63) NOT NULL DEFAULT 'default', `dkim_private` mediumtext NULL, `dkim_public` mediumtext NULL, + `relay_host` varchar(255) NOT NULL DEFAULT '', + `relay_user` varchar(255) NOT NULL DEFAULT '', + `relay_pass` varchar(255) NOT NULL DEFAULT '', `active` enum('n','y') NOT NULL DEFAULT 'n', PRIMARY KEY (`domain_id`), KEY `server_id` (`server_id`,`domain`), @@ -909,7 +918,7 @@ CREATE TABLE `mail_forwarding` ( `allow_send_as` ENUM('n','y') NOT NULL DEFAULT 'n', `greylisting` enum('n','y' ) NOT NULL DEFAULT 'n', PRIMARY KEY (`forwarding_id`), - KEY `server_id` (`server_id`,`source`), + KEY `server_id` (`server_id`, `source`), KEY `type` (`type`) ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; @@ -1014,7 +1023,7 @@ CREATE TABLE `mail_transport` ( `active` enum('n','y') NOT NULL DEFAULT 'n', PRIMARY KEY (`transport_id`), KEY `server_id` (`server_id`,`transport`), - KEY `server_id_2` (`server_id`,`domain`) + UNIQUE KEY `server_id_2` (`server_id`, `domain`) ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1325,7 +1334,7 @@ CREATE TABLE `remote_user` ( `sys_perm_group` varchar(5) default NULL, `sys_perm_other` varchar(5) default NULL, `remote_username` varchar(64) NOT NULL DEFAULT '', - `remote_password` varchar(64) NOT NULL DEFAULT '', + `remote_password` varchar(200) NOT NULL DEFAULT '', `remote_access` enum('y','n') NOT NULL DEFAULT 'y', `remote_ips` TEXT, `remote_functions` text, @@ -1462,88 +1471,6 @@ CREATE TABLE `shell_user` ( -- -------------------------------------------------------- --- --- Table structure for table `software_package` --- - -CREATE TABLE `software_package` ( - `package_id` int(11) unsigned NOT NULL auto_increment, - `software_repo_id` int(11) unsigned NOT NULL DEFAULT '0', - `package_name` varchar(64) NOT NULL DEFAULT '', - `package_title` varchar(64) NOT NULL DEFAULT '', - `package_description` text, - `package_version` varchar(8) default NULL, - `package_type` enum('ispconfig','app','web') NOT NULL default 'app', - `package_installable` enum('yes','no','key') NOT NULL default 'yes', - `package_requires_db` enum('no','mysql') NOT NULL default 'no', - `package_remote_functions` text, - `package_key` varchar(255) NOT NULL DEFAULT '', - `package_config` text, - PRIMARY KEY (`package_id`), - UNIQUE KEY `package_name` (`package_name`) -) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `software_repo` --- - -CREATE TABLE `software_repo` ( - `software_repo_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) default NULL, - `sys_perm_group` varchar(5) default NULL, - `sys_perm_other` varchar(5) default NULL, - `repo_name` varchar(64) default NULL, - `repo_url` varchar(255) default NULL, - `repo_username` varchar(64) default NULL, - `repo_password` varchar(64) default NULL, - `active` enum('n','y') NOT NULL default 'y', - PRIMARY KEY (`software_repo_id`) -) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `software_update` --- - -CREATE TABLE `software_update` ( - `software_update_id` int(11) unsigned NOT NULL auto_increment, - `software_repo_id` int(11) unsigned NOT NULL DEFAULT '0', - `package_name` varchar(64) NOT NULL DEFAULT '', - `update_url` varchar(255) NOT NULL DEFAULT '', - `update_md5` varchar(255) NOT NULL DEFAULT '', - `update_dependencies` varchar(255) NOT NULL DEFAULT '', - `update_title` varchar(64) NOT NULL DEFAULT '', - `v1` tinyint(1) NOT NULL default '0', - `v2` tinyint(1) NOT NULL default '0', - `v3` tinyint(1) NOT NULL default '0', - `v4` tinyint(1) NOT NULL default '0', - `type` enum('full','update') NOT NULL default 'full', - PRIMARY KEY (`software_update_id`) -) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `software_update_inst` --- - -CREATE TABLE `software_update_inst` ( - `software_update_inst_id` int(11) unsigned NOT NULL auto_increment, - `software_update_id` int(11) unsigned NOT NULL default '0', - `package_name` varchar(64) NOT NULL DEFAULT '', - `server_id` int(11) unsigned NOT NULL DEFAULT '0', - `status` enum('none','installing','installed','deleting','deleted','failed') NOT NULL default 'none', - PRIMARY KEY (`software_update_inst_id`), - UNIQUE KEY `software_update_id` (`software_update_id`,`package_name`,`server_id`) -) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - -- -- Table structure for table `spamfilter_policy` -- @@ -1620,7 +1547,7 @@ CREATE TABLE `spamfilter_users` ( `sys_perm_other` varchar(5) NOT NULL DEFAULT '', `server_id` int(11) unsigned NOT NULL DEFAULT '0', `priority` tinyint(3) unsigned NOT NULL default '7', - `policy_id` int(11) unsigned NOT NULL default '1', + `policy_id` int(11) unsigned NOT NULL default '0', `email` varchar(255) NOT NULL DEFAULT '', `fullname` varchar(64) default NULL, `local` varchar(1) default NULL, @@ -2485,7 +2412,7 @@ INSERT INTO `country` (`iso`, `name`, `printable_name`, `iso3`, `numcode`, `eu`) ('UG', 'UGANDA', 'Uganda', 'UGA', 800, 'n'), ('UA', 'UKRAINE', 'Ukraine', 'UKR', 804, 'n'), ('AE', 'UNITED ARAB EMIRATES', 'United Arab Emirates', 'ARE', 784, 'n'), -('GB', 'UNITED KINGDOM', 'United Kingdom', 'GBR', 826, 'y'), +('GB', 'UNITED KINGDOM', 'United Kingdom', 'GBR', 826, 'n'), ('US', 'UNITED STATES', 'United States', 'USA', 840, 'n'), ('UM', 'UNITED STATES MINOR OUTLYING ISLANDS', 'United States Minor Outlying Islands', NULL, NULL, 'n'), ('UY', 'URUGUAY', 'Uruguay', 'URY', 858, 'n'), @@ -2529,14 +2456,6 @@ INSERT INTO `help_faq_sections` VALUES (1,'General',0,NULL,NULL,NULL,NULL,NULL); -- -------------------------------------------------------- --- --- Dumping data for table `software_repo` --- - -INSERT INTO `software_repo` (`software_repo_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `repo_name`, `repo_url`, `repo_username`, `repo_password`, `active`) VALUES (1, 1, 1, 'riud', 'riud', '', 'ISPConfig Addons', 'http://repo.ispconfig.org/addons/', '', '', 'n'); - --- -------------------------------------------------------- - -- -- Dumping data for table `spamfilter_policy` -- diff --git a/install/sql/powerdns.sql b/install/sql/powerdns.sql index c9bf8280f23f2aa593dcaafd6e793ce2786413c6..640e06eb060f3b8f6a3094fcae5a1695cf476d34 100644 --- a/install/sql/powerdns.sql +++ b/install/sql/powerdns.sql @@ -20,6 +20,8 @@ CREATE TABLE IF NOT EXISTS `records` ( `ttl` int(11) default NULL, `prio` int(11) default NULL, `change_date` int(11) default NULL, + `disabled` tinyint(1) default 0, + `auth` tinyint(1) default 1, `ispconfig_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `rec_name_index` (`name`), @@ -32,3 +34,26 @@ CREATE TABLE IF NOT EXISTS `supermasters` ( `nameserver` varchar(255) NOT NULL, `account` varchar(40) default NULL ) ENGINE=InnoDB; + +CREATE TABLE IF NOT EXISTS `domainmetadata` ( + `id` int auto_increment, + `domain_id` int NOT NULL, + `kind` varchar(32), + `content` TEXT, + PRIMARY KEY (`id`) +) Engine=InnoDB; + + +-- add new columns if not existing +SET @dbname = DATABASE(); + +SELECT count(*) INTO @exist FROM `information_schema`.`columns` WHERE `table_schema` = @dbname AND `column_name` = 'auth' AND `table_name` = 'records' LIMIT 1; +SET @query = IF(@exist <= 0, 'ALTER TABLE `records` ADD COLUMN `auth` tinyint(1) default 1 AFTER `change_date`', 'SELECT \'Column Exists\' STATUS'); +PREPARE stmt FROM @query; +EXECUTE stmt; + +SELECT count(*) INTO @exist FROM `information_schema`.`columns` WHERE `table_schema` = @dbname AND `column_name` = 'disabled' AND `table_name` = 'records' LIMIT 1; +SET @query = IF(@exist <= 0, 'ALTER TABLE `records` ADD COLUMN `disabled` tinyint(1) default 0 AFTER `change_date`', 'SELECT \'Column Exists\' STATUS'); +PREPARE stmt FROM @query; +EXECUTE stmt; + diff --git a/install/tpl/amavisd_user_config.master b/install/tpl/amavisd_user_config.master index 344ea9a152de0ab43982c83b18b6bb7e99525d6c..f764bb3acb0bedd1c884f255662e7782e58b473a 100644 --- a/install/tpl/amavisd_user_config.master +++ b/install/tpl/amavisd_user_config.master @@ -33,7 +33,8 @@ use strict; $sql_select_policy = 'SELECT *,spamfilter_users.id'. ' FROM spamfilter_users LEFT JOIN spamfilter_policy ON spamfilter_users.policy_id=spamfilter_policy.id'. - ' WHERE spamfilter_users.email IN (%k) ORDER BY spamfilter_users.priority DESC'; + ' WHERE spamfilter_users.email IN (%k) AND spamfilter_users.policy_id != 0'. + ' ORDER BY spamfilter_users.priority DESC'; $sql_select_white_black_list = 'SELECT wb FROM spamfilter_wblist'. diff --git a/install/tpl/apache_ispconfig.conf.master b/install/tpl/apache_ispconfig.conf.master index b1de2a167621b5ff3fa242e33f64be14ef3065a3..c968abf3679777acd99fa6b8ddbee89524d43956 100644 --- a/install/tpl/apache_ispconfig.conf.master +++ b/install/tpl/apache_ispconfig.conf.master @@ -1,8 +1,12 @@ +# Important: A copy of this file exists in server/conf/ folder. +# Edit both files when applying changes. + ################################################ # ISPConfig General Apache Options ################################################ ServerTokens ProductOnly ServerSignature Off +DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm standard_index.html ################################################ # ISPConfig Logfile configuration for vlogger diff --git a/install/tpl/config.inc.php.master b/install/tpl/config.inc.php.master index 946a3ee50509afc9238c782a65e6ca0fb2e81003..bd5cc8f47fb0206e122361c6d60cb520e2e60bcf 100644 --- a/install/tpl/config.inc.php.master +++ b/install/tpl/config.inc.php.master @@ -33,11 +33,11 @@ if( !empty($_SERVER['DOCUMENT_ROOT']) ) { Header("Pragma: no-cache"); Header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate"); Header("Content-Type: text/html; charset=utf-8"); - + //** Set a few php.ini values ini_set('register_globals',0); ini_set('magic_quotes_gpc', 0); - + if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS']) || isset($_REQUEST['s']) || isset($_REQUEST['s_old']) || isset($_REQUEST['conf'])) { die('Internal Error: var override attempt detected'); exit; @@ -127,8 +127,8 @@ $conf['init_scripts'] = '/etc/init.d'; $conf['interface_modules_enabled'] = 'dashboard,mail,sites,dns,tools,help'; //** Demo mode -/* The demo mode is an option to restrict certain actions in the interface like -* changing the password of users with sys_userid < 3 etc. to be +/* The demo mode is an option to restrict certain actions in the interface like +* changing the password of users with sys_userid < 3 etc. to be * able to run the ISPConfig interface as online demo. It does not * affect the server part. The demo mode should be always set to false * on every normal installation @@ -141,10 +141,6 @@ $conf['log_file'] = $conf['ispconfig_log_dir'].$conf['fs_div'].'ispconfig.log'; $conf['log_priority'] = {ispconfig_log_priority}; // 0 = Debug, 1 = Warning, 2 = Error -//** Allow software package installations -$conf['software_updates_enabled'] = false; - - //** Themes $conf['theme'] = '{theme}'; $conf['html_content_encoding'] = 'utf-8'; // example: utf-8, iso-8859-1, ... diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index f933463b0b8e009736e76979d2548c3606ebfb19..36ae86fa6df7023218ba12d686fdb6a6c964ec38 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -1,3 +1,6 @@ +# Do not change this file, as changes will be overwritten by any ISPConfig update. +# Put your custom settings in /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master. +# To start using those changes, do a force upgrade and let it reconfigure your services. (ispconfig_update.sh --force) listen = *,[::] protocols = imap pop3 auth_mechanisms = plain login @@ -65,21 +68,21 @@ service imap-login { process_limit = 512 } protocol imap { - mail_plugins = quota imap_quota + mail_plugins = $mail_plugins quota imap_quota auth_verbose = yes } protocol pop3 { pop3_uidl_format = %08Xu%08Xv - mail_plugins = quota + mail_plugins = $mail_plugins quota auth_verbose = yes } protocol lda { postmaster_address = webmaster@localhost - mail_plugins = sieve quota + mail_plugins = $mail_plugins sieve quota } protocol lmtp { postmaster_address = webmaster@localhost - mail_plugins = quota sieve + mail_plugins = $mail_plugins quota sieve } #2.3+ service stats { @@ -111,7 +114,7 @@ plugin { quota_status_overquota = "552 5.2.2 Mailbox is full" } -imap_capability=+SEPCIAL-USE XLIST +imap_capability=+SPECIAL-USE XLIST namespace inbox { inbox = yes separator = . @@ -131,3 +134,5 @@ namespace inbox { special_use = \Trash } } + +!include_try conf.d/99-ispconfig-custom-config.conf \ No newline at end of file diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master index 4a44bfbfc6a63ef05e4e310464533fc1d15eb385..12288e2cdeaf510cc80603eb9bd616a371076ed9 100644 --- a/install/tpl/debian_dovecot2.conf.master +++ b/install/tpl/debian_dovecot2.conf.master @@ -1,3 +1,6 @@ +# Do not change this file, as changes will be overwritten by any ISPConfig update. +# Put your custom settings in /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master. +# To start using those changes, do a force upgrade and let it reconfigure your services. (ispconfig_update.sh --force) listen = *,[::] protocols = imap pop3 auth_mechanisms = plain login @@ -62,21 +65,21 @@ service imap-login { process_limit = 512 } protocol imap { - mail_plugins = quota imap_quota + mail_plugins = $mail_plugins quota imap_quota auth_verbose = yes } protocol pop3 { pop3_uidl_format = %08Xu%08Xv - mail_plugins = quota + mail_plugins = $mail_plugins quota auth_verbose = yes } protocol lda { postmaster_address = webmaster@localhost - mail_plugins = sieve quota + mail_plugins = $mail_plugins sieve quota } protocol lmtp { postmaster_address = webmaster@localhost - mail_plugins = quota sieve + mail_plugins = $mail_plugins quota sieve } @@ -86,7 +89,7 @@ protocol lmtp { #2.3+ group = vmail #2.3+ mode = 0660 #2.3+ } -#2.3+ +#2.3+ #2.3+ unix_listener stats-writer { #2.3+ user = vmail #2.3+ group = vmail @@ -108,3 +111,5 @@ plugin { quota_status_nouser = DUNNO quota_status_overquota = "552 5.2.2 Mailbox is full" } + +!include_try conf.d/99-ispconfig-custom-config.conf \ No newline at end of file diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index a6a48e0e02332626db23d6a9df83b92bb82722c9..5023caf6bee402159e822caa7a396ccd8f910242 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -24,11 +24,11 @@ transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:{conf relay_domains = proxy:mysql:{config_dir}/mysql-virtual_relaydomains.cf relay_recipient_maps = proxy:mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_maps.cf -proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $virtual_uid_maps $virtual_gid_maps $smtpd_client_restrictions $smtpd_sender_restrictions $smtpd_recipient_restrictions +proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $virtual_uid_maps $virtual_gid_maps $smtpd_client_restrictions $smtpd_sender_restrictions $smtpd_recipient_restrictions $smtp_sasl_password_maps $sender_dependent_relayhost_maps smtpd_helo_required = yes -smtpd_helo_restrictions = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit -smtpd_sender_restrictions = {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf -smtpd_reject_unlisted_sender = yes +smtpd_helo_restrictions = permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit +smtpd_sender_restrictions = check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf, {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unlisted_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re +smtpd_reject_unlisted_sender = no smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks, permit_sasl_authenticated{rbl_list}, reject_unauth_pipelining {reject_unknown_client_hostname}, permit smtpd_etrn_restrictions = permit_mynetworks, reject smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit @@ -53,3 +53,9 @@ tls_preempt_cipherlist = yes address_verify_negative_refresh_time=60s # needed for postfix < 3.3 when using reject_unverified_recipient (lmtp): enable_original_recipient = yes +sender_dependent_relayhost_maps = proxy:mysql:{config_dir}/mysql-virtual_sender-relayhost.cf +smtp_sasl_password_maps = proxy:mysql:{config_dir}/mysql-virtual_sender-relayauth.cf, texthash:{config_dir}/sasl_passwd +smtp_sender_dependent_authentication = yes +smtp_sasl_auth_enable = yes +smtp_sasl_security_options = noanonymous, noplaintext +smtp_sasl_tls_security_options = noanonymous diff --git a/install/tpl/dovecot_custom.conf.master b/install/tpl/dovecot_custom.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..dab73e5a09772417a31d3b45e4c8a36ef82b63e4 --- /dev/null +++ b/install/tpl/dovecot_custom.conf.master @@ -0,0 +1,3 @@ +# You can use this file for custom Dovecot settings. The used settings will overrule the settings set by ISPConfig. +# Use with caution! +# Put this file in /usr/local/ispconfig/server/conf-custom/install/ and make your changes there. diff --git a/install/tpl/fedora_amavisd_conf.master b/install/tpl/fedora_amavisd_conf.master index 9cf4b801bc669813239dc8d4478729b492623872..2435e6939e06511899dde1377f50c27de15c48b5 100644 --- a/install/tpl/fedora_amavisd_conf.master +++ b/install/tpl/fedora_amavisd_conf.master @@ -751,7 +751,8 @@ $banned_filename_re = new_RE( $sql_select_policy = 'SELECT *,spamfilter_users.id'. ' FROM spamfilter_users LEFT JOIN spamfilter_policy ON spamfilter_users.policy_id=spamfilter_policy.id'. - ' WHERE spamfilter_users.email IN (%k) ORDER BY spamfilter_users.priority DESC'; + ' WHERE spamfilter_users.email IN (%k) AND spamfilter_users.policy_id != 0'. + ' ORDER BY spamfilter_users.priority DESC'; $sql_select_white_black_list = 'SELECT wb FROM spamfilter_wblist'. diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master index a217e28d993fa46033bab2ab9009bb21df733125..d4cd148ef0e3e6c8138d844840084d57dda18e5c 100644 --- a/install/tpl/fedora_dovecot2.conf.master +++ b/install/tpl/fedora_dovecot2.conf.master @@ -1,3 +1,6 @@ +# Do not change this file, as changes will be overwritten by any ISPConfig update. +# Put your custom settings in /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master. +# To start using those changes, do a force upgrade and let it reconfigure your services. (ispconfig_update.sh --force) listen = *,[::] protocols = imap pop3 auth_mechanisms = plain login @@ -59,21 +62,21 @@ service imap-login { process_limit = 500 } protocol imap { - mail_plugins = quota imap_quota + mail_plugins = $mail_plugins quota imap_quota auth_verbose = yes } protocol pop3 { pop3_uidl_format = %08Xu%08Xv - mail_plugins = quota + mail_plugins = $mail_plugins quota auth_verbose = yes } protocol lda { - mail_plugins = sieve quota + mail_plugins = $mail_plugins sieve quota postmaster_address = root@localhost } protocol lmtp { postmaster_address = webmaster@localhost - mail_plugins = quota sieve + mail_plugins = $mail_plugins quota sieve } #2.3+ service stats { @@ -82,7 +85,7 @@ protocol lmtp { #2.3+ group = vmail #2.3+ mode = 0660 #2.3+ } -#2.3+ +#2.3+ #2.3+ unix_listener stats-writer { #2.3+ user = vmail #2.3+ group = vmail @@ -105,7 +108,7 @@ plugin { quota_status_overquota = "552 5.2.2 Mailbox is full" } -imap_capability=+SEPCIAL-USE XLIST +imap_capability=+SPECIAL-USE XLIST namespace inbox { inbox = yes separator = . @@ -125,3 +128,5 @@ namespace inbox { special_use = \Trash } } + +!include_try conf.d/99-ispconfig-custom-config.conf diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index 3cd8357a66b96917ea251064918ab99f62f0d63e..c5786c6ea8cf54262d0325a0ebccbe97d2cca640 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -20,11 +20,11 @@ transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:{conf relay_domains = proxy:mysql:{config_dir}/mysql-virtual_relaydomains.cf relay_recipient_maps = proxy:mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_maps.cf -proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $virtual_uid_maps $virtual_gid_maps $smtpd_client_restrictions $smtpd_sender_restrictions $smtpd_recipient_restrictions +proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $virtual_uid_maps $virtual_gid_maps $smtpd_client_restrictions $smtpd_sender_restrictions $smtpd_recipient_restrictions $smtp_sasl_password_maps $sender_dependent_relayhost_maps smtpd_helo_required = yes -smtpd_helo_restrictions = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit -smtpd_sender_restrictions = {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf -smtpd_reject_unlisted_sender = yes +smtpd_helo_restrictions = permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit +smtpd_sender_restrictions = check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf, {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unlisted_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re +smtpd_reject_unlisted_sender = no smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks, permit_sasl_authenticated{rbl_list}, reject_unauth_pipelining {reject_unknown_client_hostname}, permit smtpd_etrn_restrictions = permit_mynetworks, reject smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit @@ -49,3 +49,9 @@ tls_preempt_cipherlist = yes address_verify_negative_refresh_time=60s # needed for postfix < 3.3 when using reject_unverified_recipient (lmtp): enable_original_recipient = yes +sender_dependent_relayhost_maps = proxy:mysql:{config_dir}/mysql-virtual_sender-relayhost.cf +smtp_sasl_password_maps = proxy:mysql:{config_dir}/mysql-virtual_sender-relayauth.cf, texthash:{config_dir}/sasl_passwd +smtp_sender_dependent_authentication = yes +smtp_sasl_auth_enable = yes +smtp_sasl_security_options = noanonymous, noplaintext +smtp_sasl_tls_security_options = noanonymous diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index f4a1d4025c6e870dedcc031a7265a3f5f7fe65ff..405640f52a9dd4310289db241ee6fce61fec8aea 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -19,11 +19,11 @@ transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:{conf relay_domains = proxy:mysql:{config_dir}/mysql-virtual_relaydomains.cf relay_recipient_maps = proxy:mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_maps.cf -proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $virtual_uid_maps $virtual_gid_maps $smtpd_client_restrictions $smtpd_sender_restrictions $smtpd_recipient_restrictions +proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $virtual_uid_maps $virtual_gid_maps $smtpd_client_restrictions $smtpd_sender_restrictions $smtpd_recipient_restrictions $smtp_sasl_password_maps $sender_dependent_relayhost_maps smtpd_helo_required = yes -smtpd_helo_restrictions = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit -smtpd_sender_restrictions = {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf -smtpd_reject_unlisted_sender = yes +smtpd_helo_restrictions = permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit +smtpd_sender_restrictions = check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf, {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unlisted_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re +smtpd_reject_unlisted_sender = no smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks, permit_sasl_authenticated{rbl_list}, reject_unauth_pipelining {reject_unknown_client_hostname}, permit smtpd_etrn_restrictions = permit_mynetworks, reject smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit @@ -48,3 +48,9 @@ tls_preempt_cipherlist = yes address_verify_negative_refresh_time=60s # needed for postfix < 3.3 when using reject_unverified_recipient (lmtp): enable_original_recipient = yes +sender_dependent_relayhost_maps = proxy:mysql:{config_dir}/mysql-virtual_sender-relayhost.cf +smtp_sasl_password_maps = proxy:mysql:{config_dir}/mysql-virtual_sender-relayauth.cf, texthash:{config_dir}/sasl_passwd +smtp_sender_dependent_authentication = yes +smtp_sasl_auth_enable = yes +smtp_sasl_security_options = noanonymous, noplaintext +smtp_sasl_tls_security_options = noanonymous diff --git a/install/tpl/jk_init.ini.master b/install/tpl/jk_init.ini.master index b84aab95b67061e2c4253ccce156131a44f61216..2563c40b04618102fe9206abf71f31635fc7d56e 100644 --- a/install/tpl/jk_init.ini.master +++ b/install/tpl/jk_init.ini.master @@ -6,11 +6,11 @@ [uidbasics] comment = common files for all jails that need user/group information -paths = /lib/libnsl.so.1, /lib64/libnsl.so.1, /lib/libnss*.so.2, /lib64/libnss*.so.2, /lib/i386-linux-gnu/libnsl.so.1, /lib/i386-linux-gnu/libnss*.so.2, /lib/x86_64-linux-gnu/libnsl.so.1, /lib/x86_64-linux-gnu/libnss*.so.2, /lib/arm-linux-gnueabihf/libnss*.so.2, /lib/arm-linux-gnueabihf/libnsl*.so.1, /etc/nsswitch.conf, /etc/ld.so.conf +paths = /lib*/libnsl.so.*, /lib*/libnss*.so.*, /lib/*/libnsl.so.*, /lib/*/libnss*.so.*, /etc/nsswitch.conf, /etc/ld.so.conf [netbasics] comment = common files for all jails that need any internet connectivity -paths = /lib/libnss_dns.so.2, /lib64/libnss_dns.so.2, /lib/libnss_mdns*.so.2, /lib/i386-linux-gnu/libnss_dns.so.2, /lib/x86_64-linux-gnu/libnss_dns.so.2, /etc/resolv.conf, /etc/host.conf, /etc/hosts, /etc/protocols, /etc/services, /etc/ssl/certs/, /usr/lib/ssl/certs +paths = /lib*/libnss_dns.so.*, /lib*/libnss_mdns*.so.*, /lib/*/libnss_dns.so.*, /lib/*/libnss_mdns*.so.*, /etc/resolv.conf, /etc/host.conf, /etc/hosts, /etc/protocols, /etc/services, /etc/ssl/certs/, /usr/lib/ssl/certs [logbasics] comment = timezone information and log sockets @@ -35,22 +35,20 @@ devices = /dev/null [git] comment = Fast Version Control System -paths = /usr/bin/git*, /usr/lib/git-core, /usr/share/git-core, /usr/bin/pager +paths = /usr/bin/git*, /usr/lib/git-core, /usr/share/git-core, pager includesections = editors, perl, netbasics, basicshell, coreutils [scp] comment = ssh secure copy paths = scp includesections = netbasics, uidbasics -devices = /dev/urandom +devices = /dev/urandom, /dev/null [sftp] comment = ssh secure ftp paths = /usr/lib/sftp-server, /usr/libexec/openssh/sftp-server, /usr/lib/misc/sftp-server, /usr/libexec/sftp-server, /usr/lib/openssh/sftp-server includesections = netbasics, uidbasics devices = /dev/urandom, /dev/null -# on solaris -#paths = /usr/lib/ssh/sftp-server [ssh] comment = ssh secure shell @@ -74,6 +72,10 @@ users = root groups = root includesections = uidbasics +[interactiveshell] +comment = for ssh access to a full shell +includesections = uidbasics, basicshell, terminfo, editors, extendedshell + [midnightcommander] comment = Midnight Commander paths = mc, mcedit, mcview, /usr/share/mc @@ -149,8 +151,8 @@ paths_w_setuid = /bin/ping #paths = /usr/bin/X11/xterm, /usr/share/terminfo, /etc/terminfo #devices = /dev/pts/0, /dev/pts/1, /dev/pts/2, /dev/pts/3, /dev/pts/4, /dev/ptyb4, /dev/ptya4, /dev/tty, /dev/tty0, /dev/tty4 -+# coreutils from: -+# (echo -ne '\n[coreutils]\ncomment = non-sbin progs from coreutils\npaths = '; dpkg --listfiles coreutils | grep -E '^/bin/|/usr/bin/' | xargs -n1 -i@ echo -n "@, " | sed -e 's/, *$/\n/g' -e 's|/usr/bin/||g' -e 's|/bin/||g') >> /etc/jailkit/jk_init.ini +# coreutils from: +# (echo -ne '\n[coreutils]\ncomment = non-sbin progs from coreutils\npaths = '; dpkg --listfiles coreutils | grep -E '^/bin/|/usr/bin/' | xargs -n1 -i@ echo -n "@, " | sed -e 's/, *$/\n/g' -e 's|/usr/bin/||g' -e 's|/bin/||g') >> /etc/jailkit/jk_init.ini [coreutils] comment = non-sbin progs from coreutils @@ -163,7 +165,7 @@ includesections = php, mysql-client [mysql-client] comment = mysql client -paths = mysql, mysqldump, mysqlshow, /usr/lib/libmysqlclient.so, /usr/lib/i386-linux-gnu/libmariadb.so.3, /usr/lib/i386-linux-gnu/mariadb19, /usr/lib/x86_64-linux-gnu/libmariadb.so.3, /usr/lib/x86_64-linux-gnu/mariadb19 +paths = mysql, mysqldump, mysqlshow, /usr/lib/libmysqlclient.so, /usr/lib/i386-linux-gnu/libmariadb.so.3, /usr/lib/i386-linux-gnu/mariadb19, /usr/lib/x86_64-linux-gnu/libmariadb.so.3, /usr/lib/x86_64-linux-gnu/mariadb19, /usr/lib/arm-linux-gnueabihf/libmariadb.so.3, /usr/lib/arm-linux-gnueabihf/mariadb19, /usr/lib/aarch64-linux-gnu/libmariadb.so.3, /usr/lib/aarch64-linux-gnu/mariadb19 includesections = netbasics [composer] @@ -194,7 +196,7 @@ comment = common php directories and libraries # or the php config (which includes custom php snippets) from *all* # sites which use fpm will be copied to *every* jailkit paths = /usr/bin/php, /usr/lib/php/, /usr/share/php/, /usr/share/zoneinfo/ -includesections = env +includesections = env, logbasics, netbasics [php5_6] comment = php version 5.6 @@ -225,3 +227,12 @@ includesections = php_common comment = php version 7.4 paths = /usr/bin/php7.4, /usr/lib/php/7.4/, /usr/lib/php/20190902/, /usr/share/php/7.4/, /etc/php/7.4/cli/, /etc/php/7.4/mods-available/ includesections = php_common + +[php8_0] +comment = php version 8.0 +paths = /usr/bin/php8.0, /usr/lib/php/8.0/, /usr/lib/php/20200930/, /usr/share/php/8.0/, /etc/php/8.0/cli/, /etc/php/8.0/mods-available/ +includesections = php_common + +[imagemagick] +comment = ImageMagick needed for php-imagemagick extension +paths = /usr/share/ImageMagick-*, /etc/ImageMagick-*, /usr/lib/*/ImageMagick-* diff --git a/install/tpl/mysql-virtual_email2email.cf.master b/install/tpl/mysql-virtual_email2email.cf.master index 1ae7f9addcad263574d85b5f50556464859a9794..21d5146f2c129485c237fcc980f06ccf473c8e25 100644 --- a/install/tpl/mysql-virtual_email2email.cf.master +++ b/install/tpl/mysql-virtual_email2email.cf.master @@ -5,5 +5,5 @@ hosts = {mysql_server_ip} query = SELECT email FROM mail_user WHERE email = '%s' AND forward_in_lda = 'n' AND disabledeliver = 'n' AND postfix = 'y' AND server_id = {server_id} AND EXISTS (SELECT domain_id FROM mail_domain WHERE domain = SUBSTRING_INDEX('%s', '@', -1) AND active = 'y' AND server_id = {server_id}) UNION - SELECT cc AS email FROM mail_user WHERE email = '%s' AND cc != '' AND (forward_in_lda = 'n' OR disabledeliver = 'y') AND postfix = 'y' AND server_id = {server_id} + SELECT cc AS email FROM mail_user WHERE email = '%s' AND cc != '' AND (forward_in_lda = 'n' OR disabledeliver = 'y') AND disablesmtp = 'n' AND server_id = {server_id} AND EXISTS (SELECT domain_id FROM mail_domain WHERE domain = SUBSTRING_INDEX('%s', '@', -1) AND active = 'y' AND server_id = {server_id}) diff --git a/install/tpl/mysql-virtual_sender-relayauth.cf.master b/install/tpl/mysql-virtual_sender-relayauth.cf.master new file mode 100644 index 0000000000000000000000000000000000000000..413607c763f616d65263e86eb063cfcd0f5c5b2a --- /dev/null +++ b/install/tpl/mysql-virtual_sender-relayauth.cf.master @@ -0,0 +1,10 @@ +user = {mysql_server_ispconfig_user} +password = {mysql_server_ispconfig_password} +dbname = {mysql_server_database} +hosts = {mysql_server_ip} +query = SELECT CONCAT(relay_user,':',relay_pass) as credential + FROM mail_domain + WHERE domain = '%d' + AND active = 'y' + AND concat(relay_host,relay_user,relay_pass) != '' + AND server_id = {server_id} diff --git a/install/tpl/mysql-virtual_sender-relayhost.cf.master b/install/tpl/mysql-virtual_sender-relayhost.cf.master new file mode 100644 index 0000000000000000000000000000000000000000..3bb4c81330bc071d484446c25a1eb3d40ccf6ebd --- /dev/null +++ b/install/tpl/mysql-virtual_sender-relayhost.cf.master @@ -0,0 +1,10 @@ +user = {mysql_server_ispconfig_user} +password = {mysql_server_ispconfig_password} +dbname = {mysql_server_database} +hosts = {mysql_server_ip} +query = SELECT relay_host as relayhost + FROM mail_domain + WHERE domain = '%d' + AND active = 'y' + AND concat(relay_host,relay_user,relay_pass) != '' + AND server_id = {server_id} diff --git a/install/tpl/named.conf.options.master b/install/tpl/named.conf.options.master index cd5b0ebc2f614b0ab2881c733de35b42f068823c..4f001960bf1b23917146bae849f23cf80487fb2b 100644 --- a/install/tpl/named.conf.options.master +++ b/install/tpl/named.conf.options.master @@ -20,7 +20,6 @@ options { //======================================================================== dnssec-enable yes; dnssec-validation yes; - dnssec-lookaside auto; version "unknown"; diff --git a/install/tpl/nginx_apps.vhost.master b/install/tpl/nginx_apps.vhost.master index b91d1a16c5f05344b0d6c863e28c4043334d5414..181f4c807e2ee0761e61ef26f3f0589153703ca2 100644 --- a/install/tpl/nginx_apps.vhost.master +++ b/install/tpl/nginx_apps.vhost.master @@ -7,7 +7,7 @@ server { {ssl_comment}ssl_certificate_key /usr/local/ispconfig/interface/ssl/ispserver.key; # redirect to https if accessed with http - {ssl_comment}error_page 497 https://$host:{vhost_port}$request_uri; + {ssl_comment}error_page 497 https://$host:{apps_vhost_port}$request_uri; server_name {apps_vhost_servername}; diff --git a/install/tpl/opensuse_amavisd_conf.master b/install/tpl/opensuse_amavisd_conf.master index 419eea237c2a81d2bbb939a135ffe0accacfd4c4..7310db9cbf9e45956d5ce6cdbb7aa1dcaf19231d 100644 --- a/install/tpl/opensuse_amavisd_conf.master +++ b/install/tpl/opensuse_amavisd_conf.master @@ -746,7 +746,8 @@ $banned_filename_re = new_RE( $sql_select_policy = 'SELECT *,spamfilter_users.id'. ' FROM spamfilter_users LEFT JOIN spamfilter_policy ON spamfilter_users.policy_id=spamfilter_policy.id'. - ' WHERE spamfilter_users.email IN (%k) ORDER BY spamfilter_users.priority DESC'; + ' WHERE spamfilter_users.email IN (%k) AND spamfilter_users.policy_id != 0'. + ' ORDER BY spamfilter_users.priority DESC'; $sql_select_white_black_list = 'SELECT wb FROM spamfilter_wblist'. diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master index 7dc715ef69b3dece682951970f0fe1f6c96bacf7..fbbb102e1abcc605a329765ffe64db12e9054ea6 100644 --- a/install/tpl/opensuse_dovecot2.conf.master +++ b/install/tpl/opensuse_dovecot2.conf.master @@ -104,7 +104,7 @@ plugin { quota_status_overquota = "552 5.2.2 Mailbox is full" } -imap_capability=+SEPCIAL-USE XLIST +imap_capability=+SPECIAL-USE XLIST namespace inbox { inbox = yes separator = . diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index 7d3669853a6ab2ec03fa7ed5264bde0d13a2d509..a98f4223e13ee1d9221885d4ee6775b08de239ce 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -22,11 +22,11 @@ transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:{conf relay_domains = proxy:mysql:{config_dir}/mysql-virtual_relaydomains.cf relay_recipient_maps = proxy:mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_maps.cf -proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $virtual_uid_maps $virtual_gid_maps $smtpd_client_restrictions $smtpd_sender_restrictions $smtpd_recipient_restrictions +proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $virtual_uid_maps $virtual_gid_maps $smtpd_client_restrictions $smtpd_sender_restrictions $smtpd_recipient_restrictions $smtp_sasl_password_maps $sender_dependent_relayhost_maps smtpd_helo_required = yes -smtpd_helo_restrictions = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit -smtpd_sender_restrictions = {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf -smtpd_reject_unlisted_sender = yes +smtpd_helo_restrictions = permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit +smtpd_sender_restrictions = check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf, {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unlisted_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re +smtpd_reject_unlisted_sender = no smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks, permit_sasl_authenticated{rbl_list}, reject_unauth_pipelining {reject_unknown_client_hostname}, permit smtpd_etrn_restrictions = permit_mynetworks, reject smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit @@ -51,3 +51,9 @@ tls_preempt_cipherlist = yes address_verify_negative_refresh_time=60s # needed for postfix < 3.3 when using reject_unverified_recipient (lmtp): enable_original_recipient = yes +sender_dependent_relayhost_maps = proxy:mysql:{config_dir}/mysql-virtual_sender-relayhost.cf +smtp_sasl_password_maps = proxy:mysql:{config_dir}/mysql-virtual_sender-relayauth.cf, texthash:{config_dir}/sasl_passwd +smtp_sender_dependent_authentication = yes +smtp_sasl_auth_enable = yes +smtp_sasl_security_options = noanonymous, noplaintext +smtp_sasl_tls_security_options = noanonymous diff --git a/install/tpl/postfix_custom.conf.master b/install/tpl/postfix_custom.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..4f3f2124c84cef97f30c6d6206c62fdf140b56b2 --- /dev/null +++ b/install/tpl/postfix_custom.conf.master @@ -0,0 +1,3 @@ +# You can use this file for custom Postfix settings. The used settings will overrule the settings set by ISPConfig. +# Use with caution! +# Put this file in /usr/local/ispconfig/server/conf-custom/install/ and make your changes there. diff --git a/install/tpl/rspamd_antivirus.conf.master b/install/tpl/rspamd_antivirus.conf.master index f88d81ac7ce94c881087b93e0d08bc2f1849f429..aa3d2cc9f252970ad246a6cafdefea639438f36e 100644 --- a/install/tpl/rspamd_antivirus.conf.master +++ b/install/tpl/rspamd_antivirus.conf.master @@ -1,8 +1,11 @@ clamav { # If set force this action if any virus is found (default unset: no action is forced) #action = "reject"; - # if `true` only messages with non-image attachments will be checked (default true) + # Scan mime_parts separately - otherwise the complete mail will be transferred to AV Scanner scan_mime_parts = true; + # Scanning Text is suitable for some av scanner databases (e.g. Sanesecurity) + scan_text_mime = true; + scan_image_mime = true; # If `max_size` is set, messages > n bytes in size are not scanned #max_size = 20000000; # symbol to add (add it to metric if you want non-zero weight) @@ -25,6 +28,10 @@ clamav { # symbol_name = "pattern"; JUST_EICAR = "^Eicar-Test-Signature$"; } + patterns_fail { + # symbol_name = "pattern"; + CLAM_PROTOCOL_ERROR = '^unhandled response'; + } # `whitelist` points to a map of IP addresses. Mail from these addresses is not scanned. whitelist = "/etc/rspamd/antivirus.wl"; -} \ No newline at end of file +} diff --git a/install/tpl/rspamd_symbols_antivirus.conf.master b/install/tpl/rspamd_antivirus_group.conf.master similarity index 100% rename from install/tpl/rspamd_symbols_antivirus.conf.master rename to install/tpl/rspamd_antivirus_group.conf.master diff --git a/install/tpl/rspamd_arc.conf.master b/install/tpl/rspamd_arc.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..781f83ccb26ae13406725022e3f7adb4d568e851 --- /dev/null +++ b/install/tpl/rspamd_arc.conf.master @@ -0,0 +1,8 @@ +sign_authenticated = false; +sign_inbound = true; +sign_local = false; +use_domain = "recipient"; +try_fallback = false; +use_esld = false; +path_map = "/etc/rspamd/local.d/dkim_domains.map"; +selector_map = "/etc/rspamd/local.d/dkim_selectors.map"; diff --git a/install/tpl/rspamd_classifier-bayes.conf.master b/install/tpl/rspamd_classifier-bayes.conf.master deleted file mode 100644 index 1688d57e217673cdfa50ff36c31f4beb782aae70..0000000000000000000000000000000000000000 --- a/install/tpl/rspamd_classifier-bayes.conf.master +++ /dev/null @@ -1,3 +0,0 @@ -autolearn = [-0.01, 5.00]; -per_user = true; -per_language = true; \ No newline at end of file diff --git a/install/tpl/rspamd_classifier-bayes.conf.master b/install/tpl/rspamd_classifier-bayes.conf.master new file mode 120000 index 0000000000000000000000000000000000000000..b5324722948b7a3df0d5bd78d858f95ed6583b52 --- /dev/null +++ b/install/tpl/rspamd_classifier-bayes.conf.master @@ -0,0 +1 @@ +../../server/conf/rspamd_classifier-bayes.conf.master \ No newline at end of file diff --git a/install/tpl/rspamd_dkim_signing.conf.master b/install/tpl/rspamd_dkim_signing.conf.master deleted file mode 100644 index 10d89e74952075ce6daa6244ef9dbf5b22fa4a5a..0000000000000000000000000000000000000000 --- a/install/tpl/rspamd_dkim_signing.conf.master +++ /dev/null @@ -1,4 +0,0 @@ -try_fallback = false; -use_esld = false; -path_map = "/etc/rspamd/local.d/dkim_domains.map"; -selector_map = "/etc/rspamd/local.d/dkim_selectors.map"; diff --git a/install/tpl/rspamd_dkim_signing.conf.master b/install/tpl/rspamd_dkim_signing.conf.master new file mode 120000 index 0000000000000000000000000000000000000000..ebc6d4ace842401e25e1c48ff73a89d1dc4e11cf --- /dev/null +++ b/install/tpl/rspamd_dkim_signing.conf.master @@ -0,0 +1 @@ +../../server/conf/rspamd_dkim_signing.conf.master \ No newline at end of file diff --git a/install/tpl/rspamd_dkim_whitelist.inc.ispc.master b/install/tpl/rspamd_dkim_whitelist.inc.ispc.master new file mode 100644 index 0000000000000000000000000000000000000000..e9049c3ea89d44a222bf85dac37b32708cbb0295 --- /dev/null +++ b/install/tpl/rspamd_dkim_whitelist.inc.ispc.master @@ -0,0 +1,5 @@ +# Domain whitelist via valid DKIM policy +# (Prefer to spf_dkim_whitelist for domains that use both SPF and DKIM.) + +ispconfig.org + diff --git a/install/tpl/rspamd_dmarc_whitelist.inc.ispc.master b/install/tpl/rspamd_dmarc_whitelist.inc.ispc.master new file mode 100644 index 0000000000000000000000000000000000000000..498fbc971f4e240f786b019da22a512c8a0d8336 --- /dev/null +++ b/install/tpl/rspamd_dmarc_whitelist.inc.ispc.master @@ -0,0 +1,8 @@ +# Domain whitelist via valid DMARC policy (aligned SPF and/or aligned DKIM) + +comodo.com +geotrust.com +geotrusteurope.com +howtoforge.com +ispconfig.org + diff --git a/install/tpl/rspamd_greylist.conf.master b/install/tpl/rspamd_greylist.conf.master deleted file mode 100644 index 74ea715a22cc6fa76671fd47a3f1bf89cfe92d49..0000000000000000000000000000000000000000 --- a/install/tpl/rspamd_greylist.conf.master +++ /dev/null @@ -1 +0,0 @@ -servers = "127.0.0.1:6379"; \ No newline at end of file diff --git a/install/tpl/rspamd_milter_headers.conf.master b/install/tpl/rspamd_milter_headers.conf.master index d399bbf4ecc37e39ff900260a4884335767e9957..c9ef9fa2d0a517602706b54d37626517e23df285 100644 --- a/install/tpl/rspamd_milter_headers.conf.master +++ b/install/tpl/rspamd_milter_headers.conf.master @@ -1,2 +1,13 @@ -use = ["x-spamd-bar", "x-spam-level", "authentication-results"]; -authenticated_headers = ["authentication-results"]; \ No newline at end of file +use = ["x-spamd-bar", "x-spam-level", "x-spam-status", "authentication-results", "remove-headers"]; +authenticated_headers = ["authentication-results"]; +routines { + remove-headers { + headers { + "X-Spam" = 0; + "X-Spamd-Bar" = 0; + "X-Spam-Level" = 0; + "X-Spam-Status" = 0; + "X-Spam-Flag" = 0; + } + } +} diff --git a/install/tpl/rspamd_mx_check.conf.master b/install/tpl/rspamd_mx_check.conf.master index 0a628f9c8382ee1f0def03883c91b91d7701e625..0c71ecb26b9e5ae295b179851b41896432c3eb83 100644 --- a/install/tpl/rspamd_mx_check.conf.master +++ b/install/tpl/rspamd_mx_check.conf.master @@ -1,9 +1,8 @@ enabled = true; -servers = "localhost"; key_prefix = "rmx"; symbol_bad_mx = "MX_INVALID"; symbol_no_mx = "MX_MISSING"; symbol_good_mx = "MX_GOOD"; expire = 86400; expire_novalid = 7200; -greylist_invalid = false; \ No newline at end of file +greylist_invalid = false; diff --git a/install/tpl/rspamd_neural.conf.master b/install/tpl/rspamd_neural.conf.master index 76f8a6d34479f05dfb638d736fdb5c975b31a7a0..9047212cd3b6fc135fbeb37a89b6c7c825d4e52b 100644 --- a/install/tpl/rspamd_neural.conf.master +++ b/install/tpl/rspamd_neural.conf.master @@ -1,4 +1,3 @@ -servers = 127.0.0.1:6379; enabled = true; rules { @@ -28,4 +27,4 @@ rules { symbol_ham = "NEURAL_HAM_SHORT"; ann_expire = 1d; } -} \ No newline at end of file +} diff --git a/install/tpl/rspamd_options.inc.master b/install/tpl/rspamd_options.inc.master deleted file mode 100644 index 69e40365b7dc653b046b6e3cb3ff0539936a816e..0000000000000000000000000000000000000000 --- a/install/tpl/rspamd_options.inc.master +++ /dev/null @@ -1,5 +0,0 @@ -local_addrs = "127.0.0.0/8, ::1"; - -dns { - nameserver = ["127.0.0.1:53:10"]; -} diff --git a/install/tpl/rspamd_options.inc.master b/install/tpl/rspamd_options.inc.master new file mode 120000 index 0000000000000000000000000000000000000000..7cc72e81b24bd21306280236067c3400c6b61b1a --- /dev/null +++ b/install/tpl/rspamd_options.inc.master @@ -0,0 +1 @@ +../../server/conf/rspamd_options.inc.master \ No newline at end of file diff --git a/install/tpl/rspamd_override_rbl.conf.master b/install/tpl/rspamd_rbl_group.conf.master similarity index 100% rename from install/tpl/rspamd_override_rbl.conf.master rename to install/tpl/rspamd_rbl_group.conf.master diff --git a/install/tpl/rspamd_redis.conf.master b/install/tpl/rspamd_redis.conf.master deleted file mode 100644 index b908af9f5ebe0e23293797e234eb9dd455838a01..0000000000000000000000000000000000000000 --- a/install/tpl/rspamd_redis.conf.master +++ /dev/null @@ -1 +0,0 @@ -servers = "127.0.0.1"; \ No newline at end of file diff --git a/install/tpl/rspamd_redis.conf.master b/install/tpl/rspamd_redis.conf.master new file mode 120000 index 0000000000000000000000000000000000000000..df7de6da3cc87c905596bf75991fce01c00b9173 --- /dev/null +++ b/install/tpl/rspamd_redis.conf.master @@ -0,0 +1 @@ +../../server/conf/rspamd_redis.conf.master \ No newline at end of file diff --git a/install/tpl/rspamd_spf_dkim_whitelist.inc.ispc.master b/install/tpl/rspamd_spf_dkim_whitelist.inc.ispc.master new file mode 100644 index 0000000000000000000000000000000000000000..42d5c8fd85577fb807ea52816c57c02517817a57 --- /dev/null +++ b/install/tpl/rspamd_spf_dkim_whitelist.inc.ispc.master @@ -0,0 +1,9 @@ +# Domain whitelist via valid SPF policy AND valid DKIM policy +# (Prefer to spf_whitelist or dkim_whitelist for domains that use both SPF and DKIM.) + +comodo.com +geotrust.com +geotrusteurope.com +# letsencrypt is in rspamd's default spf_dkim_whitelist, only needed if strict: +#letsencrypt.org both:1.0 + diff --git a/install/tpl/rspamd_spf_whitelist.inc.ispc.master b/install/tpl/rspamd_spf_whitelist.inc.ispc.master new file mode 100644 index 0000000000000000000000000000000000000000..8eda01c8d6de5db16f42f62be3246e956776bff4 --- /dev/null +++ b/install/tpl/rspamd_spf_whitelist.inc.ispc.master @@ -0,0 +1,6 @@ +# Domain whitelist via valid SPF policy +# (Prefer to spf_dkim_whitelist for domains that use both SPF and DKIM.) + +howtoforge.com +ispconfig.org + diff --git a/install/tpl/rspamd_override_surbl.conf.master b/install/tpl/rspamd_surbl_group.conf.master similarity index 100% rename from install/tpl/rspamd_override_surbl.conf.master rename to install/tpl/rspamd_surbl_group.conf.master diff --git a/install/tpl/rspamd_users.conf.master b/install/tpl/rspamd_users.conf.master deleted file mode 120000 index 3aa7af31851003f5b742ab52de226af706cf7466..0000000000000000000000000000000000000000 --- a/install/tpl/rspamd_users.conf.master +++ /dev/null @@ -1 +0,0 @@ -../../server/conf/rspamd_users.conf.master \ No newline at end of file diff --git a/install/tpl/rspamd_users.conf.master b/install/tpl/rspamd_users.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..ba16bc8b12978d101134ab7058630b7f98f5e2d6 --- /dev/null +++ b/install/tpl/rspamd_users.conf.master @@ -0,0 +1,19 @@ +settings { + authenticated { + priority = 10; + authenticated = yes; + apply "default" { + symbols_disabled = []; + groups_disabled = ["rbl", "spf"]; + } + } + whitelist { + priority = 5; + rcpt = "postmaster"; + rcpt = "hostmaster"; + rcpt = "abuse"; + want_spam = yes; + } + .include(try=true; glob=true) "$LOCAL_CONFDIR/local.d/users/*.conf" + .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/users.local.conf" +} diff --git a/install/tpl/rspamd_users.inc.conf.master b/install/tpl/rspamd_users.inc.conf.master deleted file mode 120000 index 30bb52fd8e22d629bca9e28459d4d04e44e08ea0..0000000000000000000000000000000000000000 --- a/install/tpl/rspamd_users.inc.conf.master +++ /dev/null @@ -1 +0,0 @@ -../../server/conf/rspamd_users.inc.conf.master \ No newline at end of file diff --git a/install/tpl/rspamd_whitelist.conf.master b/install/tpl/rspamd_whitelist.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..6b4647a94831a5ba7a9828345504d8353bba7906 --- /dev/null +++ b/install/tpl/rspamd_whitelist.conf.master @@ -0,0 +1,38 @@ +rules { + "ISPC_WHITELIST_SPF" = { + valid_spf = true; + domains = [ + "$LOCAL_CONFDIR/local.d/maps.d/spf_whitelist.inc.ispc" + ]; + score = -2.0 + inverse_symbol = "ISPC_BLACKLIST_SPF"; + } + + "ISPC_WHITELIST_DKIM" = { + valid_dkim = true; + domains = [ + "$LOCAL_CONFDIR/local.d/maps.d/dkim_whitelist.inc.ispc" + ]; + score = -2.0; + inverse_symbol = "ISPC_BLACKLIST_DKIM"; + } + + "ISPC_WHITELIST_SPF_DKIM" = { + valid_spf = true; + valid_dkim = true; + domains = [ + "$LOCAL_CONFDIR/local.d/maps.d/spf_dkim_whitelist.inc.ispc" + ]; + score = -4.0; + inverse_symbol = "ISPC_BLACKLIST_SPF_DKIM"; + } + + "ISPC_WHITELIST_DMARC" = { + valid_dmarc = true; + domains = [ + "$LOCAL_CONFDIR/local.d/maps.d/dmarc_whitelist.inc.ispc" + ]; + score = -7.0; + inverse_symbol = "ISPC_BLACKLIST_DMARC"; + } +} diff --git a/install/tpl/security_settings.ini.master b/install/tpl/security_settings.ini.master index c135652e17cf15aa650168c206b44ff3725b3345..02b1058074810b1b9bfde9a173f9fb864093c92c 100644 --- a/install/tpl/security_settings.ini.master +++ b/install/tpl/security_settings.ini.master @@ -12,8 +12,6 @@ admin_allow_del_cpuser=superadmin admin_allow_cpuser_group=superadmin admin_allow_firewall_config=superadmin admin_allow_osupdate=superadmin -admin_allow_software_packages=superadmin -admin_allow_software_repo=superadmin remote_api_allowed=yes password_reset_allowed=yes session_regenerate_id=yes @@ -44,4 +42,3 @@ warn_new_admin=yes warn_passwd_change=no warn_shadow_change=no warn_group_change=no - diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master index 175617605ac2ee7c673099ea7b24ad8edf1403b5..36d48d913e420b365a021a43559d0129c1b6a8ea 100644 --- a/install/tpl/server.ini.master +++ b/install/tpl/server.ini.master @@ -37,9 +37,13 @@ maildir_path=/var/vmail/[domain]/[localpart] homedir_path=/var/vmail maildir_format=maildir dkim_path=/var/lib/amavis/dkim -dkim_strength=1024 +dkim_strength=2048 content_filter=amavis rspamd_password= +rspamd_redis_servers=127.0.0.1 +rspamd_redis_passwd= +rspamd_redis_bayes_servers=127.0.0.1 +rspamd_redis_bayes_passwd= pop3_imap_daemon=courier mail_filter_syntax=maildrop mailuser_uid=5000 @@ -59,6 +63,7 @@ overquota_notify_client=y overquota_notify_freq=7 overquota_notify_onok=n sendmail_path=/usr/sbin/sendmail +rspamd_url= [getmail] getmail_config_dir=/etc/getmail @@ -143,9 +148,9 @@ fastcgi_config_syntax=2 [jailkit] jailkit_chroot_home=/home/[username] -jailkit_chroot_app_sections=basicshell editors extendedshell netutils ssh sftp scp groups jk_lsh -jailkit_chroot_app_programs=/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico /usr/bin/mysql /usr/bin/mysqldump /usr/bin/git /usr/bin/git-receive-pack /usr/bin/git-upload-pack /usr/bin/unzip /usr/bin/zip /bin/tar /bin/rm /usr/bin/patch /usr/bin/which /usr/lib/x86_64-linux-gnu/libmemcached.so.11 /usr/lib/x86_64-linux-gnu/libmemcachedutil.so.2 /usr/lib/x86_64-linux-gnu/libMagickWand-6.Q16.so.2 /opt/php-5.6.8/bin/php /opt/php-5.6.8/include /opt/php-5.6.8/lib -jailkit_chroot_cron_programs=/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php +jailkit_chroot_app_sections=coreutils basicshell editors extendedshell netutils ssh sftp scp jk_lsh mysql-client git +jailkit_chroot_app_programs=lesspipe pico unzip zip patch which +jailkit_chroot_cron_programs=/usr/bin/php /usr/lib/php/ /usr/share/php/ /usr/share/zoneinfo/ /usr/bin/perl /usr/share/perl/ jailkit_chroot_authorized_keys_template=/root/.ssh/authorized_keys jailkit_hardlinks=allow diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master index bbd78e6b3a93066d81d63058cd96917726b9453e..1ac932aea392716d66bddd0d232e95a68632450a 100644 --- a/install/tpl/system.ini.master +++ b/install/tpl/system.ini.master @@ -8,6 +8,7 @@ [mail] enable_custom_login=n +show_per_domain_relay_options=n mailbox_show_autoresponder_tab=y mailbox_show_mail_filter_tab=y mailbox_show_custom_rules_tab=y @@ -16,6 +17,7 @@ webmail_url=/webmail dkim_path=/var/lib/amavis/dkim smtp_enabled=y smtp_host=localhost +enable_welcome_mail=y [monitor] diff --git a/install/update.php b/install/update.php index 4043647d8e4376480a5d55eb8f8117bafc18bd09..4639615801635ec03f0ccfa2832999edb9cd1749 100644 --- a/install/update.php +++ b/install/update.php @@ -96,7 +96,11 @@ require_once 'lib/classes/tpl.inc.php'; //** Check for ISPConfig 2.x versions if(is_dir('/root/ispconfig') || is_dir('/home/admispconfig')) { - die('This software cannot be installed on a server wich runs ISPConfig 2.x.'); + if(is_dir('/home/admispconfig')) { + die('This software cannot be installed on a server which runs ISPConfig 2.x.'); + } else { + die('This software cannot be installed on a server which runs ISPConfig 2.x; the presence of the /root/ispconfig/ directory may indicate an ISPConfig 2.x installation, otherwise you can remove or rename it to continue.'); + } } // Patch is required to reapir latest amavis versions @@ -185,7 +189,6 @@ $conf['server_id'] = intval($conf_old["server_id"]); $conf['ispconfig_log_priority'] = $conf_old["log_priority"]; $inst = new installer(); -if (!$inst->get_php_version()) die('ISPConfig requieres PHP '.$inst->min_php."\n"); $inst->is_update = true; $inst->check_prerequisites(); @@ -255,6 +258,8 @@ prepareDBDump(); //* initialize the database $inst->db = new db(); +$inst->db->setDBData($conf['mysql']["host"], $conf['mysql']["ispconfig_user"], $conf['mysql']["ispconfig_password"], $conf['mysql']["port"]); +$inst->db->setDBName($conf['mysql']['database']); //* initialize the master DB, if we have a multiserver setup if($conf['mysql']['master_slave_setup'] == 'y') { @@ -565,6 +570,9 @@ if(!$issue_asked) { } } +// update acme.sh if installed +$inst->update_acme(); + $inst->install_ispconfig(); // Cleanup diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php index 631bd430dafb6cb4a67d2e10d11c383ee4208493..ee4713cd98981ea80e10146d3c1ddedb822ed5a8 100755 --- a/interface/lib/app.inc.php +++ b/interface/lib/app.inc.php @@ -126,12 +126,15 @@ class app { array($this->session, 'destroy'), array($this->session, 'gc')); + ini_set('session.cookie_httponly', true); + @ini_set('session.cookie_samesite', 'Lax'); + session_start(); //* Initialize session variables if(!isset($_SESSION['s']['id']) ) $_SESSION['s']['id'] = session_id(); - if(empty($_SESSION['s']['theme'])) $_SESSION['s']['theme'] = $conf['theme']; - if(empty($_SESSION['s']['language'])) $_SESSION['s']['language'] = $conf['language']; + if(empty($_SESSION['s']['theme'])) $_SESSION['s']['theme'] = $this->_conf['theme']; + if(empty($_SESSION['s']['language'])) $_SESSION['s']['language'] = $this->_conf['language']; } } diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php index 4d4c011fb5e5e4b06bed617601bd7bac42f345d8..02d573a77812258d68dbd3716f24f5b2fb85234f 100644 --- a/interface/lib/classes/functions.inc.php +++ b/interface/lib/classes/functions.inc.php @@ -528,6 +528,117 @@ class functions { } } + // Function to lock a client + public function func_client_lock($client_id,$locked) { + global $app; + $client_data = $app->db->queryOneRecord('SELECT `tmp_data` FROM `client` WHERE `client_id` = ?', $client_id); + if($client_data['tmp_data'] == '') $tmp_data = array(); + else $tmp_data = unserialize($client_data['tmp_data']); + if(!is_array($tmp_data)) $tmp_data = array(); + $to_disable = array('cron' => 'id', + 'ftp_user' => 'ftp_user_id', + 'mail_domain' => 'domain_id', + 'mail_user' => 'mailuser_id', + 'mail_user_smtp' => 'mailuser_id', + 'mail_forwarding' => 'forwarding_id', + 'mail_get' => 'mailget_id', + 'openvz_vm' => 'vm_id', + 'shell_user' => 'shell_user_id', + 'webdav_user' => 'webdav_user_id', + 'web_database' => 'database_id', + 'web_domain' => 'domain_id', + 'web_folder' => 'web_folder_id', + 'web_folder_user' => 'web_folder_user_id' + ); + $udata = $app->db->queryOneRecord('SELECT `userid` FROM `sys_user` WHERE `client_id` = ?', $client_id); + $gdata = $app->db->queryOneRecord('SELECT `groupid` FROM `sys_group` WHERE `client_id` = ?', $client_id); + $sys_groupid = $gdata['groupid']; + $sys_userid = $udata['userid']; + if($locked == 'y') { + $prev_active = array(); + $prev_sysuser = array(); + foreach($to_disable as $current => $keycolumn) { + $active_col = 'active'; + $reverse = false; + if($current == 'mail_user') { + $active_col = 'postfix'; + } elseif($current == 'mail_user_smtp') { + $current = 'mail_user'; + $active_col = 'disablesmtp'; + $reverse = true; + } + + if(!isset($prev_active[$current])) $prev_active[$current] = array(); + if(!isset($prev_sysuser[$current])) $prev_sysuser[$current] = array(); + + $entries = $app->db->queryAllRecords('SELECT ?? as `id`, `sys_userid`, ?? FROM ?? WHERE `sys_groupid` = ?', $keycolumn, $active_col, $current, $sys_groupid); + foreach($entries as $item) { + + if($item[$active_col] != 'y' && $reverse == false) $prev_active[$current][$item['id']][$active_col] = 'n'; + elseif($item[$active_col] == 'y' && $reverse == true) $prev_active[$current][$item['id']][$active_col] = 'y'; + if($item['sys_userid'] != $sys_userid) $prev_sysuser[$current][$item['id']] = $item['sys_userid']; + // we don't have to store these if y, as everything without previous state gets enabled later + + //$app->db->datalogUpdate($current, array($active_col => ($reverse == true ? 'y' : 'n'), 'sys_userid' => $_SESSION["s"]["user"]["userid"]), $keycolumn, $item['id']); + $app->db->datalogUpdate($current, array($active_col => ($reverse == true ? 'y' : 'n'), 'sys_userid' => $sys_userid), $keycolumn, $item['id']); + } + } + + $tmp_data['prev_active'] = $prev_active; + $tmp_data['prev_sys_userid'] = $prev_sysuser; + $app->db->query("UPDATE `client` SET `tmp_data` = ? WHERE `client_id` = ?", serialize($tmp_data), $client_id); + unset($prev_active); + unset($prev_sysuser); + } elseif ($locked == 'n') { + foreach($to_disable as $current => $keycolumn) { + $active_col = 'active'; + $reverse = false; + if($current == 'mail_user') { + $active_col = 'postfix'; + } elseif($current == 'mail_user_smtp') { + $current = 'mail_user'; + $active_col = 'disablesmtp'; + $reverse = true; + } + + $entries = $app->db->queryAllRecords('SELECT ?? as `id` FROM ?? WHERE `sys_groupid` = ?', $keycolumn, $current, $sys_groupid); + foreach($entries as $item) { + $set_active = ($reverse == true ? 'n' : 'y'); + $set_inactive = ($reverse == true ? 'y' : 'n'); + $set_sysuser = $sys_userid; + if(array_key_exists('prev_active', $tmp_data) == true + && array_key_exists($current, $tmp_data['prev_active']) == true + && array_key_exists($item['id'], $tmp_data['prev_active'][$current]) == true + && $tmp_data['prev_active'][$current][$item['id']][$active_col] == $set_inactive) $set_active = $set_inactive; + if(array_key_exists('prev_sysuser', $tmp_data) == true + && array_key_exists($current, $tmp_data['prev_sysuser']) == true + && array_key_exists($item['id'], $tmp_data['prev_sysuser'][$current]) == true + && $tmp_data['prev_sysuser'][$current][$item['id']] != $sys_userid) $set_sysuser = $tmp_data['prev_sysuser'][$current][$item['id']]; + $app->db->datalogUpdate($current, array($active_col => $set_active, 'sys_userid' => $set_sysuser), $keycolumn, $item['id']); + } + } + if(array_key_exists('prev_active', $tmp_data)) unset($tmp_data['prev_active']); + $app->db->query("UPDATE `client` SET `tmp_data` = ? WHERE `client_id` = ?", serialize($tmp_data), $client_id); + } + unset($tmp_data); + unset($entries); + unset($to_disable); + } + // Function to cancel disable/enable a client + public function func_client_cancel($client_id,$cancel) { + global $app; + if ($cancel == 'y') { + $sql = "UPDATE sys_user SET active = '0' WHERE client_id = ?"; + $result = $app->db->query($sql, $client_id); + } elseif($cancel == 'n') { + $sql = "UPDATE sys_user SET active = '1' WHERE client_id = ?"; + $result = $app->db->query($sql, $client_id); + } else { + $result = false; + } + return $result; + } + } ?> diff --git a/interface/lib/classes/ispcmail.inc.php b/interface/lib/classes/ispcmail.inc.php index fbf5f84dcae2f0d8104f1cb540c66d5a69dadf49..f5aa35957753ec1c6ff65d6a9eb555cff747065e 100644 --- a/interface/lib/classes/ispcmail.inc.php +++ b/interface/lib/classes/ispcmail.inc.php @@ -612,6 +612,9 @@ class ispcmail { if (stream_socket_enable_crypto($this->_smtp_conn, true, $crypto_method) != true) { return false; } + + fputs($this->_smtp_conn, 'HELO ' . $this->smtp_helo . $this->_crlf); + $response = fgets($this->_smtp_conn, 515); } //AUTH LOGIN @@ -824,8 +827,7 @@ class ispcmail { else $rec_string .= $recip; } $to = $this->_encodeHeader($rec_string, $this->mail_charset); - //$result = mail($to, $subject, $this->body, implode($this->_crlf, $headers)); - $result = mail($to, $enc_subject, $this->body, implode($this->_crlf, $headers)); + $result = mail($to, $enc_subject, $this->body, implode($this->_crlf, $headers), "-f $this->_mail_sender"); } // Reset the subject in case mail is resent diff --git a/interface/lib/classes/quota_lib.inc.php b/interface/lib/classes/quota_lib.inc.php index 3bae97f046ada93cb7c701dfb5d52ffa58e7ad8f..b02cdea9949fb92c23451a18f49b2377a3d23d4c 100644 --- a/interface/lib/classes/quota_lib.inc.php +++ b/interface/lib/classes/quota_lib.inc.php @@ -2,8 +2,8 @@ class quota_lib { public function get_quota_data($clientid = null, $readable = true) { - global $app; - + global $app; + $tmp_rec = $app->db->queryAllRecords("SELECT data from monitor_data WHERE type = 'harddisk_quota' ORDER BY created DESC"); $monitor_data = array(); if(is_array($tmp_rec)) { @@ -12,10 +12,10 @@ class quota_lib { } } //print_r($monitor_data); - + // select all websites or websites belonging to client $sites = $app->db->queryAllRecords("SELECT * FROM web_domain WHERE active = 'y' AND type = 'vhost'".(($clientid != null)?" AND sys_groupid = (SELECT default_group FROM sys_user WHERE client_id=?)":'') . " ORDER BY domain", $clientid); - + //print_r($sites); if(is_array($sites) && !empty($sites)){ for($i=0;$i<sizeof($sites);$i++){ @@ -24,7 +24,7 @@ class quota_lib { $sites[$i]['soft'] = $monitor_data['user'][$username]['soft']; $sites[$i]['hard'] = $monitor_data['user'][$username]['hard']; $sites[$i]['files'] = $monitor_data['user'][$username]['files']; - + if (!is_numeric($sites[$i]['used'])){ if ($sites[$i]['used'][0] > $sites[$i]['used'][1]){ $sites[$i]['used'] = $sites[$i]['used'][0]; @@ -35,13 +35,13 @@ class quota_lib { if (!is_numeric($sites[$i]['soft'])) $sites[$i]['soft']=$sites[$i]['soft'][1]; if (!is_numeric($sites[$i]['hard'])) $sites[$i]['hard']=$sites[$i]['hard'][1]; if (!is_numeric($sites[$i]['files'])) $sites[$i]['files']=$sites[$i]['files'][1]; - + $sites[$i]['used_raw'] = $sites[$i]['used']; $sites[$i]['soft_raw'] = $sites[$i]['soft']; $sites[$i]['hard_raw'] = $sites[$i]['hard']; $sites[$i]['files_raw'] = $sites[$i]['files']; $sites[$i]['used_percentage'] = ($sites[$i]['soft'] > 0 && $sites[$i]['used'] > 0 ? round($sites[$i]['used'] * 100 / $sites[$i]['soft']) : 0); - + if ($readable) { // colours $sites[$i]['display_colour'] = '#000000'; @@ -52,31 +52,31 @@ class quota_lib { } if($used_ratio >= 0.8) $sites[$i]['display_colour'] = '#fd934f'; if($used_ratio >= 1) $sites[$i]['display_colour'] = '#cc0000'; - + if($sites[$i]['used'] > 1024) { $sites[$i]['used'] = round($sites[$i]['used'] / 1024, 1).' MB'; } else { if ($sites[$i]['used'] != '') $sites[$i]['used'] .= ' KB'; } - + if($sites[$i]['soft'] > 1024) { $sites[$i]['soft'] = round($sites[$i]['soft'] / 1024, 1).' MB'; } else { $sites[$i]['soft'] .= ' KB'; } - + if($sites[$i]['hard'] > 1024) { $sites[$i]['hard'] = round($sites[$i]['hard'] / 1024, 1).' MB'; } else { $sites[$i]['hard'] .= ' KB'; } - + if($sites[$i]['soft'] == " KB") $sites[$i]['soft'] = $app->lng('unlimited_txt'); if($sites[$i]['hard'] == " KB") $sites[$i]['hard'] = $app->lng('unlimited_txt'); - + if($sites[$i]['soft'] == '0 B' || $sites[$i]['soft'] == '0 KB' || $sites[$i]['soft'] == '0') $sites[$i]['soft'] = $app->lng('unlimited_txt'); if($sites[$i]['hard'] == '0 B' || $sites[$i]['hard'] == '0 KB' || $sites[$i]['hard'] == '0') $sites[$i]['hard'] = $app->lng('unlimited_txt'); - + /* if(!strstr($sites[$i]['used'],'M') && !strstr($sites[$i]['used'],'K')) $sites[$i]['used'].= ' B'; if(!strstr($sites[$i]['soft'],'M') && !strstr($sites[$i]['soft'],'K')) $sites[$i]['soft'].= ' B'; @@ -86,35 +86,35 @@ class quota_lib { else { if (empty($sites[$i]['soft'])) $sites[$i]['soft'] = -1; if (empty($sites[$i]['hard'])) $sites[$i]['hard'] = -1; - + if($sites[$i]['soft'] == '0 B' || $sites[$i]['soft'] == '0 KB' || $sites[$i]['soft'] == '0') $sites[$i]['soft'] = -1; if($sites[$i]['hard'] == '0 B' || $sites[$i]['hard'] == '0 KB' || $sites[$i]['hard'] == '0') $sites[$i]['hard'] = -1; } } } - + return $sites; } - + public function get_trafficquota_data($clientid = null, $lastdays = 0) { global $app; - + $traffic_data = array(); - + // select vhosts (belonging to client) if($clientid != null){ $sql_where = " AND sys_groupid = (SELECT default_group FROM sys_user WHERE client_id=?)"; } $sites = $app->db->queryAllRecords("SELECT * FROM web_domain WHERE active = 'y' AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias')".$sql_where, $clientid); - + $hostnames = array(); $traffic_data = array(); - + foreach ($sites as $site) { $hostnames[] = $site['domain']; $traffic_data[$site['domain']]['domain_id'] = $site['domain_id']; } - + // fetch all traffic-data of selected vhosts if (!empty($hostnames)) { $tmp_year = date('Y'); @@ -129,7 +129,7 @@ class quota_lib { foreach ($tmp_recs as $tmp_rec) { $traffic_data[$tmp_rec['hostname']]['this_year'] = $tmp_rec['t']; } - + $tmp_year = date('Y', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); $tmp_month = date('m', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); // Last Month @@ -137,14 +137,14 @@ class quota_lib { foreach ($tmp_recs as $tmp_rec) { $traffic_data[$tmp_rec['hostname']]['last_month'] = $tmp_rec['t']; } - + $tmp_year = date('Y', mktime(0, 0, 0, date("m"), date("d"), date("Y")-1)); // Last Year $tmp_recs = $app->db->queryAllRecords("SELECT hostname, SUM(traffic_bytes) as t FROM web_traffic WHERE YEAR(traffic_date) = ? AND hostname IN ? GROUP BY hostname", $tmp_year, $hostnames); foreach ($tmp_recs as $tmp_rec) { $traffic_data[$tmp_rec['hostname']]['last_year'] = $tmp_rec['t']; } - + if (is_int($lastdays) && ($lastdays > 0)) { // Last xx Days $tmp_recs = $app->db->queryAllRecords("SELECT hostname, SUM(traffic_bytes) as t FROM web_traffic WHERE (traffic_date >= DATE_SUB(NOW(), INTERVAL ? DAY)) AND hostname IN ? GROUP BY hostname", $lastdays, $hostnames); @@ -153,29 +153,29 @@ class quota_lib { } } } - + return $traffic_data; } public function get_ftptrafficquota_data($clientid = null, $lastdays = 0) { global $app; - + $traffic_data = array(); - + // select vhosts (belonging to client) if($clientid != null){ $sql_where = " AND sys_groupid = (SELECT default_group FROM sys_user WHERE client_id=?)"; } $sites = $app->db->queryAllRecords("SELECT * FROM web_domain WHERE active = 'y' AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias')".$sql_where, $clientid); - + $hostnames = array(); $traffic_data = array(); - + foreach ($sites as $site) { $hostnames[] = $site['domain']; $traffic_data[$site['domain']]['domain_id'] = $site['domain_id']; } - + // fetch all traffic-data of selected vhosts if (!empty($hostnames)) { $tmp_year = date('Y'); @@ -190,7 +190,7 @@ class quota_lib { foreach ($tmp_recs as $tmp_rec) { $traffic_data[$tmp_rec['hostname']]['this_year'] = $tmp_rec['t']; } - + $tmp_year = date('Y', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); $tmp_month = date('m', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); // Last Month @@ -198,14 +198,14 @@ class quota_lib { foreach ($tmp_recs as $tmp_rec) { $traffic_data[$tmp_rec['hostname']]['last_month'] = $tmp_rec['t']; } - + $tmp_year = date('Y', mktime(0, 0, 0, date("m"), date("d"), date("Y")-1)); // Last Year $tmp_recs = $app->db->queryAllRecords("SELECT hostname, SUM(in_bytes) AS ftp_in, SUM(out_bytes) AS ftp_out FROM ftp_traffic WHERE YEAR(traffic_date) = ? AND hostname IN ? GROUP BY hostname", $tmp_year, $hostnames); foreach ($tmp_recs as $tmp_rec) { $traffic_data[$tmp_rec['hostname']]['last_year'] = $tmp_rec['t']; } - + if (is_int($lastdays) && ($lastdays > 0)) { // Last xx Days $tmp_recs = $app->db->queryAllRecords("SELECT hostname, SUM(in_bytes) AS ftp_in, SUM(out_bytes) AS ftp_out FROM ftp_traffic WHERE (traffic_date >= DATE_SUB(NOW(), INTERVAL ? DAY)) AND hostname IN ? GROUP BY hostname", $lastdays, $hostnames); @@ -214,13 +214,13 @@ class quota_lib { } } } - + return $traffic_data; } - + public function get_mailquota_data($clientid = null, $readable = true) { global $app; - + $tmp_rec = $app->db->queryAllRecords("SELECT data from monitor_data WHERE type = 'email_quota' ORDER BY created DESC"); $monitor_data = array(); if(is_array($tmp_rec)) { @@ -235,25 +235,25 @@ class quota_lib { } } //print_r($monitor_data); - + // select all email accounts or email accounts belonging to client $emails = $app->db->queryAllRecords("SELECT * FROM mail_user".(($clientid != null)? " WHERE sys_groupid = (SELECT default_group FROM sys_user WHERE client_id=?)" : '') . " ORDER BY email", $clientid); - + //print_r($emails); - if(is_array($emails) && !empty($emails)){ + if(is_array($emails) && !empty($emails)) { for($i=0;$i<sizeof($emails);$i++){ $email = $emails[$i]['email']; - + $emails[$i]['name'] = $app->functions->htmlentities($emails[$i]['name']); $emails[$i]['used'] = isset($monitor_data[$email]['used']) ? $monitor_data[$email]['used'] : array(1 => 0); - + if (!is_numeric($emails[$i]['used'])) $emails[$i]['used']=$emails[$i]['used'][1]; - + $emails[$i]['quota_raw'] = $emails[$i]['quota']; $emails[$i]['used_raw'] = $emails[$i]['used']; $emails[$i]['used_percentage'] = ($emails[$i]['quota'] > 0 && $emails[$i]['used'] > 0 ? round($emails[$i]['used'] * 100 / $emails[$i]['quota']) : 0); - + if ($readable) { // colours $emails[$i]['display_colour'] = '#000000'; @@ -264,14 +264,14 @@ class quota_lib { } if($used_ratio >= 0.8) $emails[$i]['display_colour'] = '#fd934f'; if($used_ratio >= 1) $emails[$i]['display_colour'] = '#cc0000'; - + if($emails[$i]['quota'] == 0){ $emails[$i]['quota'] = $app->lng('unlimited_txt'); } else { $emails[$i]['quota'] = round($emails[$i]['quota'] / 1048576, 1).' MB'; } - - + + if($emails[$i]['used'] < 1544000) { $emails[$i]['used'] = round($emails[$i]['used'] / 1024, 1).' KB'; } else { @@ -280,13 +280,13 @@ class quota_lib { } } } - + return $emails; } - + public function get_databasequota_data($clientid = null, $readable = true) { global $app; - + $tmp_rec = $app->db->queryAllRecords("SELECT data from monitor_data WHERE type = 'database_size' ORDER BY created DESC"); $monitor_data = array(); if(is_array($tmp_rec)) { @@ -300,21 +300,21 @@ class quota_lib { } } //print_r($monitor_data); - + // select all databases belonging to client $databases = $app->db->queryAllRecords("SELECT * FROM web_database".(($clientid != null)? " WHERE sys_groupid = (SELECT default_group FROM sys_user WHERE client_id=?)" : '') . " ORDER BY database_name", $clientid); - + //print_r($databases); if(is_array($databases) && !empty($databases)){ for($i=0;$i<sizeof($databases);$i++){ $databasename = $databases[$i]['database_name']; - + $databases[$i]['used'] = isset($monitor_data[$databasename]['size']) ? $monitor_data[$databasename]['size'] : 0; - + $databases[$i]['quota_raw'] = $databases[$i]['database_quota']; $databases[$i]['used_raw'] = $databases[$i]['used'] / 1024 / 1024; //* quota is stored as MB - calculated bytes $databases[$i]['used_percentage'] = (($databases[$i]['database_quota'] > 0) && ($databases[$i]['used'] > 0)) ? round($databases[$i]['used_raw'] * 100 / $databases[$i]['database_quota']) : 0; - + if ($readable) { // colours $databases[$i]['display_colour'] = '#000000'; @@ -325,14 +325,14 @@ class quota_lib { } if($used_ratio >= 0.8) $databases[$i]['display_colour'] = '#fd934f'; if($used_ratio >= 1) $databases[$i]['display_colour'] = '#cc0000'; - + if($databases[$i]['database_quota'] == 0){ $databases[$i]['database_quota'] = $app->lng('unlimited_txt'); } else { $databases[$i]['database_quota'] = $databases[$i]['database_quota'] . ' MB'; } - - + + if($databases[$i]['used'] < 1544000) { $databases[$i]['used'] = round($databases[$i]['used'] / 1024, 1).' KB'; } else { @@ -341,8 +341,8 @@ class quota_lib { } } } - + return $databases; } - + } diff --git a/interface/lib/classes/remote.d/client.inc.php b/interface/lib/classes/remote.d/client.inc.php index 57412e5e192bef9f478c59db36c80db1fc5864f5..5af1592db9347d60932f5f05b44b27d2274a6d05 100644 --- a/interface/lib/classes/remote.d/client.inc.php +++ b/interface/lib/classes/remote.d/client.inc.php @@ -243,6 +243,15 @@ class remoting_client extends remoting { $affected_rows = $this->updateQuery('../client/form/' . (isset($params['limit_client']) && $params['limit_client'] != 0 ? 'reseller' : 'client') . '.tform.php', $reseller_id, $client_id, $params, 'client:' . ($reseller_id ? 'reseller' : 'client') . ':on_after_update'); $app->remoting_lib->ispconfig_sysuser_update($params, $client_id); + + // if canceled + if ($params['canceled']) { + $result = $app->functions->func_client_cancel($client_id, $params['canceled']); + } + // if locked + if ($params['locked']) { + $result = $app->functions->func_client_lock($client_id, $params['locked']); + } return $affected_rows; } @@ -404,7 +413,7 @@ class remoting_client extends remoting { $app->db->query("DELETE FROM sys_user WHERE client_id = ?", $client_id); //* Delete all records (sub-clients, mail, web, etc....) of this client. - $tables = 'cron,dns_rr,dns_soa,dns_slave,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_database_user,web_domain,web_traffic,domain,mail_mailinglist,client'; + $tables = 'cron,dns_rr,dns_soa,dns_slave,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_database_user,web_domain,web_traffic,domain,mail_mailinglist,client,spamfilter_wblist'; $tables_array = explode(',', $tables); $client_group_id = $app->functions->intval($client_group['groupid']); if($client_group_id > 1) { diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php index b65dd63c8dcdbdd2b890135e1d42acdc666ec441..b5d4b3820c02db80aa45a79b5ffdef0e21ebfc6a 100644 --- a/interface/lib/classes/remote.d/dns.inc.php +++ b/interface/lib/classes/remote.d/dns.inc.php @@ -46,7 +46,6 @@ class remoting_dns extends remoting { global $app, $conf; if(!$this->checkPerm($session_id, 'dns_templatezone_add')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; } $client = $app->db->queryOneRecord("SELECT default_dnsserver FROM client WHERE client_id = ?", $client_id); @@ -249,7 +248,7 @@ class remoting_dns extends remoting { return false; } - if(!preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9\-]{2,63}$/', $origin)){ + if(!preg_match('/^[\w\.\-]{1,64}\.[a-zA-Z0-9\-]{2,63}$/', $origin)){ throw new SoapFault('no_domain_found', 'Invalid domain name.'); return false; } @@ -514,6 +513,29 @@ class remoting_dns extends remoting { return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'HINFO'); } + + // ---------------------------------------------------------------------------------------------------------------- + + //* Get record details + public function dns_loc_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'LOC'); + } + + //* Add a record + public function dns_loc_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'LOC'); + } + + //* Update a record + public function dns_loc_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'LOC'); + } + + //* Delete a record + public function dns_loc_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'LOC'); + } + // ---------------------------------------------------------------------------------------------------------------- //* Get record details diff --git a/interface/lib/classes/remote.d/mail.inc.php b/interface/lib/classes/remote.d/mail.inc.php index c4582c634e43824d632881b2496b5a71930c3ba9..286d6f6c57d6e30d72b4b869b15a0648477e7a3b 100644 --- a/interface/lib/classes/remote.d/mail.inc.php +++ b/interface/lib/classes/remote.d/mail.inc.php @@ -663,7 +663,7 @@ class remoting_mail extends remoting { return $app->remoting_lib->getDataRecord($primary_id); } - //* biaÅ‚a lista e-mail + //* add spamfilter whitelist entry public function mail_spamfilter_whitelist_add($session_id, $client_id, $params) { if (!$this->checkPerm($session_id, 'mail_spamfilter_whitelist_add')) @@ -763,7 +763,7 @@ class remoting_mail extends remoting { return $app->remoting_lib->getDataRecord($primary_id); } - //* filtr spamu użytkowników e-mail + //* Add new spamfilter_users public function mail_spamfilter_user_add($session_id, $client_id, $params) { if (!$this->checkPerm($session_id, 'mail_spamfilter_user_add')) diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php index 751edcf024ce8d70b157bf74af4e2b45e2ac859c..fbadebd777a078da38ecad0670bc328b6346f3b1 100644 --- a/interface/lib/classes/remoting.inc.php +++ b/interface/lib/classes/remoting.inc.php @@ -124,17 +124,30 @@ class remoting { $remote_functions = ''; $tstamp = time() + $this->session_timeout; $sql = 'INSERT INTO remote_session (remote_session,remote_userid,remote_functions,client_login,tstamp' - .') VALUES (?, ?, ?, 1, $tstamp)'; + .') VALUES (?, ?, ?, 1, ?)'; $app->db->query($sql, $remote_session,$remote_userid,$remote_functions,$tstamp); return $remote_session; } else { - $sql = "SELECT * FROM remote_user WHERE remote_username = ? and remote_password = md5(?)"; - $remote_user = $app->db->queryOneRecord($sql, $username, $password); - if($remote_user['remote_userid'] > 0) { + $sql = "SELECT * FROM remote_user WHERE remote_username = ?"; + $remote_user = $app->db->queryOneRecord($sql, $username); + if($remote_user) { + if(substr($remote_user['remote_password'], 0, 1) === '$') { + if(crypt(stripslashes($password), $remote_user['remote_password']) != $remote_user['remote_password']) { + $remote_user = null; + } + } elseif(md5($password) == $remote_user['remote_password']) { + // update hash algo + $sql = 'UPDATE `remote_user` SET `remote_password` = ? WHERE `remote_username` = ?'; + $app->db->query($sql, $app->auth->crypt_password($password), $username); + } else { + $remote_user = null; + } + } + if($remote_user && $remote_user['remote_userid'] > 0) { if (trim($remote_user['remote_ips']) != '') { $allowed_ips = explode(',',$remote_user['remote_ips']); - foreach($allowed_ips as $i => $allowed) { - if(!filter_var($allowed, FILTER_VALIDATE_IP)) { + foreach($allowed_ips as $i => $allowed) { + if(!filter_var($allowed, FILTER_VALIDATE_IP)) { // get the ip for a hostname unset($allowed_ips[$i]); $temp=dns_get_record($allowed, DNS_A+DNS_AAAA); @@ -169,7 +182,7 @@ class remoting { if(!$remote_allowed) { throw new SoapFault('login_failed', 'The login is not allowed from '.$_SERVER['REMOTE_ADDR']); return false; - } + } //* Create a remote user session //srand ((double)microtime()*1000000); $remote_session = md5(mt_rand().uniqid('ispco')); @@ -368,22 +381,22 @@ class remoting { //* Load the form definition $app->remoting_lib->loadFormDef($formdef_file); - + //* get old record and merge with params, so only new values have to be set in $params $old_rec = $app->remoting_lib->getDataRecord($primary_id, $client_id); - + foreach ($app->remoting_lib->formDef['fields'] as $fieldName => $fieldConf) { if ($fieldConf['formtype'] === 'PASSWORD' && empty($params[$fieldName])) { unset($old_rec[$fieldName]); } } - + $params = $app->functions->array_merge($old_rec,$params); //* Get the SQL query $sql = $app->remoting_lib->getSQL($params, 'UPDATE', $primary_id); - + // throw new SoapFault('debug', $sql); if($app->remoting_lib->errorMessage != '') { throw new SoapFault('data_processing_error', $app->remoting_lib->errorMessage); @@ -546,7 +559,7 @@ class remoting { return false; } } - + /** Gets a list of all servers @param int session_id diff --git a/interface/web/admin/software_package_del.php b/interface/lib/classes/validate_mail_transport.inc.php similarity index 59% rename from interface/web/admin/software_package_del.php rename to interface/lib/classes/validate_mail_transport.inc.php index e1387f39c43459b7261f1d90d19798a78c4a7d3e..6b47d953030cb2274ed34ed598231336f940fbc9 100644 --- a/interface/web/admin/software_package_del.php +++ b/interface/lib/classes/validate_mail_transport.inc.php @@ -1,7 +1,8 @@ <?php /* -Copyright (c) 2012, Till Brehm, projektfarm Gmbh +Copyright (c) 2007, Till Brehm, projektfarm Gmbh +Copyright (c) 2021, Jesse Norell <jesse@kci.net> All rights reserved. Redistribution and use in source and binary forms, with or without modification, @@ -28,30 +29,33 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -require_once '../../lib/config.inc.php'; -require_once '../../lib/app.inc.php'; +class validate_mail_transport { -//* Check permissions for module -$app->auth->check_module_permissions('admin'); -$app->auth->check_security_permissions('admin_allow_software_packages'); -if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); + function get_error($errmsg) { + global $app; -// Check CSRF Token -$app->auth->csrf_token_check('GET'); - -$software_update_inst_id = $app->functions->intval($_GET['software_update_inst_id']); - -if($software_update_inst_id > 0) { - $app->db->datalogDelete('software_update_inst', 'software_update_inst_id', $software_update_inst_id); - //header('Location: admin/software_package_list.php'); - die('HEADER_REDIRECT: admin/software_package_list.php'); -} else { - die('Invalid ID'); -} + if(isset($app->tform->wordbook[$errmsg])) { + return $app->tform->wordbook[$errmsg]."<br>\r\n"; + } else { + return $errmsg."<br>\r\n"; + } + } + /* Validator function for checking the 'domain' of a mail transport */ + function validate_domain($field_name, $field_value, $validator) { + global $app, $conf; + if(isset($app->remoting_lib->primary_id)) { + $id = $app->remoting_lib->primary_id; + } else { + $id = $app->tform->primary_id; + } + // mail_transport.domain (could also be an email address) must be unique per server + $sql = "SELECT transport_id, domain FROM mail_transport WHERE domain = ? AND server_id = ? AND transport_id != ?"; + $domain_check = $app->db->queryOneRecord($sql, $field_value, $app->tform_actions->dataRecord['server_id'], $id); + if($domain_check) return $this->get_error('domain_error_unique'); + } - -?> +} diff --git a/interface/lib/config.inc.php b/interface/lib/config.inc.php index ccda3717e1ed7a3857e6f23939cb807c54c0b870..c5d14d79cdbdb02d98e2a1129d91871101170258 100644 --- a/interface/lib/config.inc.php +++ b/interface/lib/config.inc.php @@ -128,10 +128,6 @@ $conf['log_file'] = $conf['ispconfig_log_dir'].'/ispconfig.log'; $conf['log_priority'] = 0; // 0 = Debug, 1 = Warning, 2 = Error -//** Allow software package installations -$conf['software_updates_enabled'] = false; - - //** Themes $conf['theme'] = 'default'; $conf['html_content_encoding'] = 'utf-8'; // example: utf-8, iso-8859-1, ... diff --git a/interface/lib/plugins/mail_mail_domain_plugin.inc.php b/interface/lib/plugins/mail_mail_domain_plugin.inc.php index 598fe74f09bb75c843b4a9a66a322e454a471957..4ff756f44fb2ec1be22c46313b8c7da649128a99 100644 --- a/interface/lib/plugins/mail_mail_domain_plugin.inc.php +++ b/interface/lib/plugins/mail_mail_domain_plugin.inc.php @@ -13,9 +13,10 @@ class mail_mail_domain_plugin { /* This function is called when the plugin is loaded - */ + */ function onLoad() { global $app; + //Register for the events $app->plugin->registerEvent('mail:mail_domain:on_after_insert', 'mail_mail_domain_plugin', 'mail_mail_domain_edit'); $app->plugin->registerEvent('mail:mail_domain:on_after_update', 'mail_mail_domain_plugin', 'mail_mail_domain_edit'); @@ -23,13 +24,13 @@ class mail_mail_domain_plugin { /* Function to create the sites_web_domain rule and insert it into the custom rules - */ + */ function mail_mail_domain_edit($event_name, $page_form) { global $app, $conf; $domain = $app->functions->idn_encode($page_form->dataRecord['domain']); - // make sure that the record belongs to the client group and not the admin group when a dmin inserts it + // make sure that the record belongs to the client group and not the admin group when admin inserts it // also make sure that the user can not delete entry created by an admin if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($page_form->dataRecord["client_group_id"])) { $client_group_id = $app->functions->intval($page_form->dataRecord["client_group_id"]); @@ -64,6 +65,8 @@ class mail_mail_domain_plugin { $app->uses('getconf'); $mail_config = $app->getconf->get_server_config($page_form->dataRecord["server_id"], 'mail'); + $old_domain = $app->functions->idn_encode($page_form->oldDataRecord['domain']); + //* Update the mailboxes $mailusers = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE email like ?", "%@" . $page_form->oldDataRecord['domain']); $sys_groupid = $app->functions->intval((isset($page_form->dataRecord['client_group_id']))?$page_form->dataRecord['client_group_id']:$page_form->oldDataRecord['sys_groupid']); @@ -76,25 +79,164 @@ class mail_mail_domain_plugin { $maildir = str_replace("[domain]", $domain, $mail_config["maildir_path"]); $maildir = str_replace("[localpart]", $mail_parts[0], $maildir); $email = $mail_parts[0].'@'.$domain; + + // update spamfilter_users and spamfilter_wblist if email change + $skip_spamfilter_users_update = false; + if($email != $rec['email']) { + $tmp_olduser = $app->db->queryOneRecord("SELECT id,fullname FROM spamfilter_users WHERE email = ?", $rec['email']); + if($tmp_olduser['id'] > 0) { + $tmp_newuser = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", $email); + if($tmp_newuser['id'] > 0) { + // There is a spamfilter_users for both old and new email, we'll update old wblist entries + $tmp_wblist = $app->db->queryAllRecords("SELECT wblist_id FROM spamfilter_wblist WHERE rid = ?", $tmp_olduser['id']); + foreach ($tmp_wblist as $tmp) { + $update_data = array( + 'rid' => $tmp_newuser['id'], + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + $app->db->datalogUpdate('spamfilter_wblist', $update_data, 'wblist_id', $tmp['wblist_id']); + } + + // now delete old spamfilter_users entry + $app->db->datalogDelete('spamfilter_users', 'id', $tmp_olduser['id']); + } else { + $update_data = array( + 'email' => $email, + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + if($tmp_olduser['fullname'] == $app->functions->idn_decode($rec['email'])) { + $update_data['fullname'] = $app->functions->idn_decode($email); + } + $app->db->datalogUpdate('spamfilter_users', $update_data, 'id', $tmp_olduser['id']); + $skip_spamfilter_users_update = true; + + $tmp_wblist = $app->db->queryAllRecords("SELECT wblist_id FROM spamfilter_wblist WHERE rid = ?", $tmp_olduser['id']); + $update_data = array( + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + foreach ($tmp_wblist as $tmp) { + $app->db->datalogUpdate('spamfilter_wblist', $update_data, 'wblist_id', $tmp['wblist_id']); + } + } + } + + $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", $email); + if($tmp_user["id"] > 0) { + // There is already a record that we will update + if(!$skip_spamfilter_users_update) { + $update_data = array( + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + $app->db->datalogUpdate('spamfilter_users', $update_data, 'id', $tmp_user['id']); + } + } else { + // We create a new record + $insert_data = array( + "sys_userid" => $client_user_id, + "sys_groupid" => $sys_groupid, + "sys_perm_user" => 'riud', + "sys_perm_group" => 'riud', + "sys_perm_other" => '', + "server_id" => $page_form->dataRecord["server_id"], + "priority" => 5, + "policy_id" => 0, + "email" => $email, + "fullname" => $app->functions->idn_decode($email), + "local" => 'Y' + ); + $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); + } + } + $app->db->datalogUpdate('mail_user', array("maildir" => $maildir, "email" => $email, "sys_userid" => $client_user_id, "sys_groupid" => $sys_groupid), 'mailuser_id', $rec['mailuser_id']); + } } //* Update the aliases - $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source LIKE ? OR destination LIKE ?", "%@" . $page_form->oldDataRecord['domain'], "%@" . $page_form->oldDataRecord['domain']); + $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source like ? OR destination like ?", '%@' . $old_domain, '%@' . $old_domain); if(is_array($forwardings)) { foreach($forwardings as $rec) { - $destination = str_replace($page_form->oldDataRecord['domain'], $domain, $rec['destination']); - $source = str_replace($page_form->oldDataRecord['domain'], $domain, $rec['source']); + $destination = str_replace($old_domain, $domain, $rec['destination']); + $source = str_replace($old_domain, $domain, $rec['source']); + + // update spamfilter_users and spamfilter_wblist if source email changes + $skip_spamfilter_users_update = false; + if(strpos($rec['source'],'@'.$old_domain) && $source != $rec['source']) { + $tmp_olduser = $app->db->queryOneRecord("SELECT id,fullname FROM spamfilter_users WHERE email = ?", $rec['source']); + if($tmp_olduser['id'] > 0) { + $tmp_newuser = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", $source); + if($tmp_newuser['id'] > 0) { + // There is a spamfilter_users for both old and new email, we'll update old wblist entries + $tmp_wblist = $app->db->queryAllRecords("SELECT wblist_id FROM spamfilter_wblist WHERE rid = ?", $tmp_olduser['id']); + foreach ($tmp_wblist as $tmp) { + $update_data = array( + 'rid' => $tmp_newuser['id'], + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + $app->db->datalogUpdate('spamfilter_wblist', $update_data, 'wblist_id', $tmp['wblist_id']); + } + + // now delete old spamfilter_users entry + $app->db->datalogDelete('spamfilter_users', 'id', $tmp_olduser['id']); + } else { + $update_data = array( + 'email' => $source, + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + if($tmp_olduser['fullname'] == $app->functions->idn_decode($rec['source'])) { + $update_data['fullname'] = $app->functions->idn_decode($source); + } + $app->db->datalogUpdate('spamfilter_users', $update_data, 'id', $tmp_olduser['id']); + $skip_spamfilter_users_update = true; + + $tmp_wblist = $app->db->queryAllRecords("SELECT wblist_id FROM spamfilter_wblist WHERE rid = ?", $tmp_olduser['id']); + $update_data = array( + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + foreach ($tmp_wblist as $tmp) { + $app->db->datalogUpdate('spamfilter_wblist', $update_data, 'wblist_id', $tmp['wblist_id']); + } + } + } + + + $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", $source); + if($tmp_user["id"] > 0) { + // There is already a record that we will update + if(!$skip_spamfilter_users_update) { + $update_data = array( + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + $app->db->datalogUpdate('spamfilter_users', $update_data, 'id', $tmp_user['id']); + } + } + + } + $app->db->datalogUpdate('mail_forwarding', array("source" => $source, "destination" => $destination, "sys_userid" => $client_user_id, "sys_groupid" => $sys_groupid), 'forwarding_id', $rec['forwarding_id']); } } //* Update the mailinglist - $mailing_lists = $app->db->queryAllRecords("SELECT mailinglist_id FROM mail_mailinglist WHERE domain = ?", $page_form->oldDataRecord['domain']); - if(is_array($mailing_lists)) { - foreach($mailing_lists as $rec) { - $app->db->datalogUpdate('mail_mailinglist', array("sys_userid" => $client_user_id, "sys_groupid" => $sys_groupid), 'mailinglist_id', $rec['mailinglist_id']); + $mailinglists = $app->db->queryAllRecords("SELECT * FROM mail_mailinglist WHERE domain = ?", $old_domain); + if(is_array($mailinglists)) { + foreach($mailinglists as $rec) { + $update_data = array( + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + 'domain' => $domain, + 'email' => str_replace($old_domain, $domain, $rec['email']), + ); + $app->db->datalogUpdate('mail_mailinglist', $update_data, 'mailinglist_id', $rec['mailinglist_id']); } } @@ -107,25 +249,81 @@ class mail_mail_domain_plugin { } } - if ($page_form->oldDataRecord["domain"] != $domain) { - //* Delete the old spamfilter record - $tmp = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", "@" . $page_form->oldDataRecord["domain"]); - $app->db->datalogDelete('spamfilter_users', 'id', $tmp["id"]); - unset($tmp); + // Spamfilter policy + $policy_id = $app->functions->intval($page_form->dataRecord["policy"]); + + // If domain changes, update spamfilter_users + // and fire spamfilter_wblist_update events so rspamd files are rewritten + if ($old_domain != $domain) { + $tmp_users = $app->db->queryOneRecord("SELECT id,fullname FROM spamfilter_users WHERE email LIKE ?", '%@' . $old_domain); + if(is_array($tmp_users)) { + foreach ($tmp_users as $tmp_old) { + $tmp_new = $app->db->queryOneRecord("SELECT id,fullname FROM spamfilter_users WHERE email = ?", '@' . $domain); + if($tmp_new['id'] > 0) { + // There is a spamfilter_users for both old and new domain, we'll update old wblist entries + $update_data = array( + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + 'rid' => $tmp_new['id'], + ); + $tmp_wblist = $app->db->queryAllRecords("SELECT wblist_id FROM spamfilter_wblist WHERE rid = ?", $tmp_old['id']); + foreach ($tmp_wblist as $tmp) { + $app->db->datalogUpdate('spamfilter_wblist', $update_data, 'wblist_id', $tmp['wblist_id']); + } + + // now delete old spamfilter_users entry + $app->db->datalogDelete('spamfilter_users', 'id', $tmp_old['id']); + + /// and update the new + $update_data = array( + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + $app->db->datalogUpdate('spamfilter_users', $update_data, 'id', $tmp_old['id']); + } else { + $update_data = array( + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + 'email' => '@' . $domain, + ); + if($tmp_old['fullname'] == '@' . $old_domain) { + $update_data['fullname'] = '@' . $domain; + } + $app->db->datalogUpdate('spamfilter_users', $update_data, 'id', $tmp_old['id']); + } + } + } } - $app->db->query("UPDATE spamfilter_users SET email=REPLACE(email, ?, ?), sys_userid = ?, sys_groupid = ? WHERE email LIKE ?", $page_form->oldDataRecord['domain'], $domain, $client_user_id, $sys_groupid, "%@" . $page_form->oldDataRecord['domain']); - } // end if domain name changed - - //* Force-update the aliases (required for spamfilter changes) - $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source LIKE ? OR destination LIKE ?", "%@" . $domain, "%@" . $domain); - - if(is_array($forwardings)) { - foreach($forwardings as $rec) { - $app->db->datalogUpdate('mail_forwarding', array("source" => $rec['source']), 'forwarding_id', $rec['forwarding_id'],true); + $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", '@' . $domain); + if(isset($tmp_user['id']) && $tmp_user['id'] > 0) { + // There is already a record that we will update + if($policy_id != $tmp_user['policy_id']) { + $update_data = array( + 'policy_id' => $policy_id, + ); + $app->db->datalogUpdate('spamfilter_users', $update_data, 'id', $tmp_user["id"]); + } + } else { + // We create a new record + $insert_data = array( + "sys_userid" => $client_user_id, + "sys_groupid" => $sys_groupid, + "sys_perm_user" => 'riud', + "sys_perm_group" => 'riud', + "sys_perm_other" => '', + "server_id" => $page_form->dataRecord["server_id"], + "priority" => 5, + "policy_id" => $policy_id, + "email" => '@' . $domain, + "fullname" => '@' . $domain, + "local" => 'Y' + ); + $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); } - } - + + } // end if domain name changed + } } diff --git a/interface/web/admin/form/dbsync.tform.php b/interface/web/admin/form/dbsync.tform.php index 8a4181b88870045b8b839c686bb67913db67bd6f..b854db81f93238575135def343cc38f603b8a988 100644 --- a/interface/web/admin/form/dbsync.tform.php +++ b/interface/web/admin/form/dbsync.tform.php @@ -94,7 +94,7 @@ unset($form); $form['title'] = 'DB sync'; -$form['description'] = 'ISPConfig database synchronisation tool.'; +//$form['description'] = 'ISPConfig database synchronisation tool.'; $form['name'] = 'dbsync'; $form['action'] = 'dbsync_edit.php'; $form['db_table'] = 'sys_dbsync'; diff --git a/interface/web/admin/form/firewall.tform.php b/interface/web/admin/form/firewall.tform.php index eb7dcb3acf83bf7d603d7a3454fe62b2610b2ee9..90614bac55394582cd661649b72810c32b9d7219 100644 --- a/interface/web/admin/form/firewall.tform.php +++ b/interface/web/admin/form/firewall.tform.php @@ -79,7 +79,7 @@ $form["tabs"]['firewall'] = array ( 'regex' => '/^$|\d{1,5}(?::\d{1,5})?(?:,\d{1,5}(?::\d{1,5})?)*$/', 'errmsg'=> 'tcp_ports_error_regex'), ), - 'default' => '20,21,22,25,53,80,110,143,443,465,587,993,995,3306,8080,8081,10000', + 'default' => '21,22,25,53,80,110,143,443,465,587,993,995,3306,4190,8080,8081,40110:40210', 'value' => '', 'width' => '30', 'maxlength' => '255' @@ -91,7 +91,7 @@ $form["tabs"]['firewall'] = array ( 'regex' => '/^$|\d{1,5}(?::\d{1,5})?(?:,\d{1,5}(?::\d{1,5})?)*$/', 'errmsg'=> 'udp_ports_error_regex'), ), - 'default' => '53,3306', + 'default' => '53', 'value' => '', 'width' => '30', 'maxlength' => '255' diff --git a/interface/web/admin/form/groups.tform.php b/interface/web/admin/form/groups.tform.php index 5bcbe6279f7a82a3e5d49c4b08c67f9e313c7266..6a2b3acb9f82d70bd9def77294cb997870bcc2ec 100644 --- a/interface/web/admin/form/groups.tform.php +++ b/interface/web/admin/form/groups.tform.php @@ -60,7 +60,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ $form["title"] = "Groups"; -$form["description"] = "groups_description"; +//$form["description"] = "groups_description"; $form["name"] = "groups"; $form["action"] = "groups_edit.php"; $form["db_table"] = "sys_group"; diff --git a/interface/web/admin/form/iptables.tform.php b/interface/web/admin/form/iptables.tform.php index 76d747020d3966a7390d141c7df50c2262687764..d36ade42b8637e02a333120e2d57b72ff11ae55f 100644 --- a/interface/web/admin/form/iptables.tform.php +++ b/interface/web/admin/form/iptables.tform.php @@ -1,7 +1,7 @@ <?php $form["title"] = "IPTables"; -$form["description"] = "IPTables based firewall"; +//$form["description"] = "IPTables based firewall"; $form["name"] = "iptables"; $form["action"] = "iptables_edit.php"; $form["db_table"] = "iptables"; diff --git a/interface/web/admin/form/remote_user.tform.php b/interface/web/admin/form/remote_user.tform.php index 6e351730c249041f39da8505f4d0ed8b79be7b12..0a8595f1b804b7712de4b1dd4f9615f94aceac06 100644 --- a/interface/web/admin/form/remote_user.tform.php +++ b/interface/web/admin/form/remote_user.tform.php @@ -109,7 +109,7 @@ $form["tabs"]['remote_user'] = array ( 'errmsg' => 'weak_password_txt' ) ), - 'encryption' => 'MD5', + 'encryption' => 'CRYPT', 'default' => '', 'value' => '', 'width' => '30', @@ -124,11 +124,11 @@ $form["tabs"]['remote_user'] = array ( 'remote_ips' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXT', - 'validators' => array ( + 'validators' => array ( 0 => array ( - 'type' => 'CUSTOM', - 'class' => 'validate_remote_user', - 'function' => 'valid_remote_ip', + 'type' => 'CUSTOM', + 'class' => 'validate_remote_user', + 'function' => 'valid_remote_ip', 'errmsg' => 'remote_user_error_ips'), ), 'default' => '', diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 7d1e1526f5c37fda54f523484d825118f47b80f6..47a48a3c279e2bf438a3efeb796debed358b1293 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -34,7 +34,7 @@ */ $form["title"] = "server_config"; -$form["description"] = ""; +//$form["description"] = ""; $form["name"] = "server_config"; $form["action"] = "server_config_edit.php"; $form["db_table"] = "server"; @@ -131,7 +131,7 @@ $form["tabs"]['server'] = array( 'validators' => array( 0 => array('type' => 'NOTEMPTY', 'errmsg' => 'hostname_error_empty'), 1 => array ('type' => 'REGEX', - 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,63}$/', + 'regex' => '/^[\w\.\-]{1,255}\.[a-zA-Z0-9\-]{2,63}$/', 'errmsg'=> 'hostname_error_regex'), ), 'value' => '', @@ -481,8 +481,57 @@ $form["tabs"]['mail'] = array( 'value' => '', 'width' => '40', 'maxlength' => '255', - 'filters' => array( 0 => array( 'event' => 'SAVE', - 'type' => 'TRIM'), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'TRIM'), + ), + ), + 'rspamd_redis_servers' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '127.0.0.1', + 'value' => '', + 'width' => '40', + 'maxlength' => '255', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'TRIM'), + ), + ), + 'rspamd_redis_password' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'TRIM'), + ), + ), + 'rspamd_redis_bayes_servers' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '127.0.0.1', + 'value' => '', + 'width' => '40', + 'maxlength' => '255', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'TRIM'), + ), + ), + 'rspamd_redis_bayes_password' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'TRIM'), ), ), 'rspamd_available' => array( @@ -717,6 +766,18 @@ $form["tabs"]['mail'] = array( 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), + 'rspamd_url' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'filters' => array( + 0 => array( 'event' => 'SAVE', 'type' => 'IDNTOASCII'), + 1 => array( 'event' => 'SHOW', 'type' => 'IDNTOUTF8') + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), //################################# // END Datatable fields //################################# diff --git a/interface/web/admin/form/server_ip.tform.php b/interface/web/admin/form/server_ip.tform.php index d86dbb753568f035144de4e7c087ca1469e570e6..920e55119190a8b77d96a146e50f990704d3619f 100644 --- a/interface/web/admin/form/server_ip.tform.php +++ b/interface/web/admin/form/server_ip.tform.php @@ -65,7 +65,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ $form["title"] = "server_ip_edit_title"; -$form["description"] = "server_ip_edit_desc"; +//$form["description"] = "server_ip_edit_desc"; $form["name"] = "server_ip"; $form["action"] = "server_ip_edit.php"; $form["db_table"] = "server_ip"; diff --git a/interface/web/admin/form/server_ip_map.tform.php b/interface/web/admin/form/server_ip_map.tform.php index 2374ca0ce0e59d3bb32a4579147472e3cc6bedd4..1f611d1dad8aa6f2b8d241f9c64506607c755c23 100644 --- a/interface/web/admin/form/server_ip_map.tform.php +++ b/interface/web/admin/form/server_ip_map.tform.php @@ -29,7 +29,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ $form["title"] = "server_ip_map_title"; -$form["description"] = "server_ip_map_desc"; +//$form["description"] = "server_ip_map_desc"; $form["name"] = "server_ip_map"; $form["action"] = "server_ip_map_edit.php"; $form["db_table"] = "server_ip_map"; @@ -59,7 +59,7 @@ $form["tabs"]['server_ip_map'] = array ( 'source_ip' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', - 'validators' => array ( + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'source_ip_empty'), ), 'default' => '', @@ -68,7 +68,7 @@ $form["tabs"]['server_ip_map'] = array ( 'destination_ip' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', - 'validators' => array ( + 'validators' => array ( 0 => array ( 'type' => 'ISIPV4', 'errmsg'=> 'ip_error_wrong'), 1 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'destination_ip_empty'), ), diff --git a/interface/web/admin/form/server_php.tform.php b/interface/web/admin/form/server_php.tform.php index 59eb7b4a6fa325a7368a7eeebcc52009fd703673..2a37a1e6d1e66ecaebe10c8eeef22e77f1c27902 100644 --- a/interface/web/admin/form/server_php.tform.php +++ b/interface/web/admin/form/server_php.tform.php @@ -60,7 +60,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ $form["title"] = "Additional PHP Versions"; -$form["description"] = "Form to edit additional PHP versions"; +//$form["description"] = "Form to edit additional PHP versions"; $form["name"] = "server_php"; $form["action"] = "server_php_edit.php"; $form["db_table"] = "server_php"; diff --git a/interface/web/admin/form/software_package.tform.php b/interface/web/admin/form/software_package.tform.php deleted file mode 100644 index b8368d545751d19216fac8c69c588dc62b1cad48..0000000000000000000000000000000000000000 --- a/interface/web/admin/form/software_package.tform.php +++ /dev/null @@ -1,128 +0,0 @@ -<?php - -/* -Copyright (c) 2008, Till Brehm, projektfarm Gmbh -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - Form Definition - - Tabellendefinition - - Datentypen: - - INTEGER (Wandelt Ausdrücke in Int um) - - DOUBLE - - CURRENCY (Formatiert Zahlen nach Währungsnotation) - - VARCHAR (kein weiterer Format Check) - - TEXT (kein weiterer Format Check) - - DATE (Datumsformat, Timestamp Umwandlung) - - Formtype: - - TEXT (normales Textfeld) - - TEXTAREA (normales Textfeld) - - PASSWORD (Feldinhalt wird nicht angezeigt) - - SELECT (Gibt Werte als option Feld aus) - - RADIO - - CHECKBOX - - FILE - - VALUE: - - Wert oder Array - - Hinweis: - Das ID-Feld ist nicht bei den Table Values einzufügen. - - -*/ - -$form["title"] = "Software Package"; -$form["description"] = "Modify software package details"; -$form["name"] = "software_package"; -$form["action"] = "software_package_edit.php"; -$form["db_table"] = "software_package"; -$form["db_table_idx"] = "package_id"; -$form["db_history"] = "no"; -$form["tab_default"] = "software_package"; -$form["list_default"] = "software_package_list.php"; -$form["auth"] = 'yes'; - -$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user -$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user -$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete - -$form["tabs"]['software_package'] = array ( - 'title' => "Software Package", - 'width' => 80, - 'template' => "templates/software_package_edit.htm", - 'fields' => array ( - //################################# - // Beginn Datenbankfelder - //################################# - 'package_title' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'filters' => array( - 0 => array( 'event' => 'SAVE', - 'type' => 'STRIPTAGS'), - 1 => array( 'event' => 'SAVE', - 'type' => 'STRIPNL') - ), - 'validators' => '', - 'default' => '', - 'value' => '', - 'separator' => '', - 'width' => '40', - 'maxlength' => '40', - 'rows' => '', - 'cols' => '' - ), - 'package_key' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'filters' => array( - 0 => array( 'event' => 'SAVE', - 'type' => 'STRIPTAGS'), - 1 => array( 'event' => 'SAVE', - 'type' => 'STRIPNL') - ), - 'validators' => '', - 'default' => '', - 'value' => '', - 'separator' => '', - 'width' => '40', - 'maxlength' => '40', - 'rows' => '', - 'cols' => '' - ), - //################################# - // ENDE Datenbankfelder - //################################# - ) -); -?> diff --git a/interface/web/admin/form/software_repo.tform.php b/interface/web/admin/form/software_repo.tform.php deleted file mode 100644 index cbf68b3a3588e5e31d2c998e87c3b28b3fe20134..0000000000000000000000000000000000000000 --- a/interface/web/admin/form/software_repo.tform.php +++ /dev/null @@ -1,171 +0,0 @@ -<?php - -/* -Copyright (c) 2008, Till Brehm, projektfarm Gmbh -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - Form Definition - - Tabellendefinition - - Datentypen: - - INTEGER (Wandelt Ausdrücke in Int um) - - DOUBLE - - CURRENCY (Formatiert Zahlen nach Währungsnotation) - - VARCHAR (kein weiterer Format Check) - - TEXT (kein weiterer Format Check) - - DATE (Datumsformat, Timestamp Umwandlung) - - Formtype: - - TEXT (normales Textfeld) - - TEXTAREA (normales Textfeld) - - PASSWORD (Feldinhalt wird nicht angezeigt) - - SELECT (Gibt Werte als option Feld aus) - - RADIO - - CHECKBOX - - FILE - - VALUE: - - Wert oder Array - - Hinweis: - Das ID-Feld ist nicht bei den Table Values einzufügen. - - -*/ - -$form["title"] = "Software Repository"; -$form["description"] = "Software Repository which may contain addons or updates"; -$form["name"] = "software_repo"; -$form["action"] = "software_repo_edit.php"; -$form["db_table"] = "software_repo"; -$form["db_table_idx"] = "software_repo_id"; -$form["db_history"] = "no"; -$form["tab_default"] = "software_repo"; -$form["list_default"] = "software_repo_list.php"; -$form["auth"] = 'yes'; - -$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user -$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user -$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete - -$form["tabs"]['software_repo'] = array ( - 'title' => "Repository", - 'width' => 80, - 'template' => "templates/software_repo_edit.htm", - 'fields' => array ( - //################################# - // Beginn Datenbankfelder - //################################# - 'repo_name' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'repo_name_empty'), - 1 => array ( 'type' => 'UNIQUE', - 'errmsg'=> 'repo_name_unique'), - ), - 'filters' => array( - 0 => array( 'event' => 'SAVE', - 'type' => 'STRIPTAGS'), - 1 => array( 'event' => 'SAVE', - 'type' => 'STRIPNL') - ), - 'default' => '', - 'value' => '', - 'separator' => '', - 'width' => '40', - 'maxlength' => '40', - 'rows' => '', - 'cols' => '' - ), - 'repo_url' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'repo_name_empty'), - 1 => array ( 'type' => 'UNIQUE', - 'errmsg'=> 'repo_name_unique'), - ), - 'filters' => array( - 0 => array( 'event' => 'SAVE', - 'type' => 'STRIPTAGS'), - 1 => array( 'event' => 'SAVE', - 'type' => 'STRIPNL') - ), - 'default' => '', - 'value' => '', - 'separator' => '', - 'width' => '40', - 'maxlength' => '40', - 'rows' => '', - 'cols' => '' - ), - 'repo_username' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'filters' => array( - 0 => array( 'event' => 'SAVE', - 'type' => 'STRIPTAGS'), - 1 => array( 'event' => 'SAVE', - 'type' => 'STRIPNL') - ), - 'default' => '', - 'value' => '', - 'separator' => '', - 'width' => '30', - 'maxlength' => '30', - 'rows' => '', - 'cols' => '' - ), - 'repo_password' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'PASSWORD', - 'encryption' => 'CLEARTEXT', - 'default' => '', - 'value' => '', - 'separator' => '', - 'width' => '30', - 'maxlength' => '30', - 'rows' => '', - 'cols' => '' - ), - 'active' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - //################################# - // ENDE Datenbankfelder - //################################# - ) -); -?> diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php index bbfb921e9a34b6a1969531bf72a8f084ba53c794..c7d15ffcf4ddfcb6a7a125a732c539e050f1d68d 100644 --- a/interface/web/admin/form/system_config.tform.php +++ b/interface/web/admin/form/system_config.tform.php @@ -34,7 +34,7 @@ */ $form["title"] = "system_config_title"; -$form["description"] = "system_config_desc_txt"; +//$form["description"] = "system_config_desc_txt"; $form["name"] = "system_config"; $form["action"] = "system_config_edit.php"; $form["db_table"] = "sys_ini"; @@ -267,6 +267,18 @@ $form["tabs"]['mail'] = array ( 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), + 'enable_welcome_mail' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'show_per_domain_relay_options' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), 'mailbox_show_autoresponder_tab' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', diff --git a/interface/web/admin/form/tpl_default.tform.php b/interface/web/admin/form/tpl_default.tform.php index baa84d7b309ecb999de03f7098a10c5a17f790be..804cfd95423615e36fab4ff5715f2d96275ff50e 100644 --- a/interface/web/admin/form/tpl_default.tform.php +++ b/interface/web/admin/form/tpl_default.tform.php @@ -60,7 +60,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ $form["title"] = "tpl_default_head_txt"; -$form["description"] = "tpl_default_desc_txt"; +//$form["description"] = "tpl_default_desc_txt"; $form["name"] = "tpl_default"; $form["action"] = "tpl_default.php"; $form["db_table"] = "sys_theme"; diff --git a/interface/web/admin/lib/lang/ar_remote_action.lng b/interface/web/admin/lib/lang/ar_remote_action.lng index 3f8948e19f602408715f9554606f5478359bec9a..dfe56b616d5b3d18abd7eb9965b8c5602cb4354c 100644 --- a/interface/web/admin/lib/lang/ar_remote_action.lng +++ b/interface/web/admin/lib/lang/ar_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Select Server'; $wb['btn_do_txt'] = 'Execute action'; $wb['do_osupdate_caption'] = 'Do OS-Update at remote server'; -$wb['do_osupdate_desc'] = 'This Action does a aptitude -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; +$wb['do_osupdate_desc'] = 'This Action does a apt -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['do_ispcupdate_caption'] = 'Do ISPConfig 3 - Update at remote server'; $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['action_scheduled'] = 'The action is scheduled for execution'; diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index b95b3567e643ade50e58d56385c1a96a27f34ca4..ac03605279d769d3b8c8d2be21bcb84b43b8e687 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/ar_server_php.lng b/interface/web/admin/lib/lang/ar_server_php.lng index 179a8fc357142ea401cd663697ef817237957d10..491be1aae2ecd613527e187940420d748137ed86 100644 --- a/interface/web/admin/lib/lang/ar_server_php.lng +++ b/interface/web/admin/lib/lang/ar_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/ar_software_package.lng b/interface/web/admin/lib/lang/ar_software_package.lng deleted file mode 100644 index faffe38217fb9cac04020e73e473c6c46e3caaa1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ar_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> diff --git a/interface/web/admin/lib/lang/ar_software_package_install.lng b/interface/web/admin/lib/lang/ar_software_package_install.lng deleted file mode 100644 index 5c8b756434ce27d67e479a96383bbee01bce4f1f..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ar_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Install software package'; -$wb['install_key_txt'] = 'Enter install key'; -$wb['btn_save_txt'] = 'Start Installation'; -$wb['btn_cancel_txt'] = 'Cancel'; -?> diff --git a/interface/web/admin/lib/lang/ar_software_package_list.lng b/interface/web/admin/lib/lang/ar_software_package_list.lng deleted file mode 100644 index 9fa53867bc70f653a4410da5dc70988beebfdcdb..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ar_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Software packages'; -$wb['installed_txt'] = 'Status'; -$wb['package_title_txt'] = 'Package'; -$wb['package_description_txt'] = 'Description'; -$wb['action_txt'] = 'Action'; -$wb['toolsarea_head_txt'] = 'Packages'; -$wb['repoupdate_txt'] = 'Update package list'; -$wb['package_id_txt'] = 'local App-ID'; -$wb['no_packages_txt'] = 'No packages available'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/ar_software_repo.lng b/interface/web/admin/lib/lang/ar_software_repo.lng deleted file mode 100644 index f2cbbb2c25776ab5f1794e7102ad264a98144049..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ar_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'User (optional)'; -$wb['repo_password_txt'] = 'Password (optional)'; -$wb['active_txt'] = 'Active'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/ar_software_repo_list.lng b/interface/web/admin/lib/lang/ar_software_repo_list.lng deleted file mode 100644 index b7a219ffa8e2f6d389fabdc5386286a24fc2a11a..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ar_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Repository'; -$wb['active_txt'] = 'Active'; -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/ar_software_update_list.lng b/interface/web/admin/lib/lang/ar_software_update_list.lng deleted file mode 100644 index fe7639125cd2634fa809d9a6592e9e9fb21e84bb..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ar_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Software updates'; -$wb['server_select_txt'] = 'Select server'; -$wb['installed_txt'] = 'Action'; -$wb['update_title_txt'] = 'Update'; -$wb['version_txt'] = 'Version'; -$wb['action_txt'] = 'Action'; -$wb['no_updates_txt'] = 'No updates available'; -?> diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng index 7d3df7fbf8ab5092e5ba3f71efa63886fdfb120e..5d21ab4c2e93e8bf0fd713516481429a36d9d97c 100644 --- a/interface/web/admin/lib/lang/ar_system_config.lng +++ b/interface/web/admin/lib/lang/ar_system_config.lng @@ -23,6 +23,7 @@ $wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; $wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; $wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; $wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Allow custom login name'; $wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; $wb['mailmailinglist_url_txt'] = 'Mailing list URL'; @@ -51,6 +52,7 @@ $wb['use_loadindicator_txt'] = 'Use Load Indicator'; $wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; $wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; $wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; diff --git a/interface/web/admin/lib/lang/ar_users_list.lng b/interface/web/admin/lib/lang/ar_users_list.lng index 4f7a7469b020b2d31638c6ed69dd2e40a6b595b6..84869c062694fdd70076f76f84fcdbeb41d86fd8 100644 --- a/interface/web/admin/lib/lang/ar_users_list.lng +++ b/interface/web/admin/lib/lang/ar_users_list.lng @@ -4,6 +4,6 @@ $wb['username_txt'] = 'Username'; $wb['client_id_txt'] = 'Client ID'; $wb['active_txt'] = 'Active'; $wb['add_new_record_txt'] = 'Add new user'; -$wb['warning_txt'] = '<b>WARNING:</b> Do not edit or modify any user settings here. Use the Client- and Reseller settings in the Client module instead. Modifying or changing users or groups here may cause data loss!'; +$wb['warning_txt'] = '<b>WARNING:</b> Do not edit or modify any client user settings here. Use the client- and reseller settings in the client module instead. Modifying or changing client users or groups here may cause data loss!'; $wb['groups_txt'] = 'Groups'; ?> diff --git a/interface/web/admin/lib/lang/bg_remote_action.lng b/interface/web/admin/lib/lang/bg_remote_action.lng index 6925ec260dbfa4b48ac2b93884f0358ef28cb892..8d6e441d852736b08b183efc2b178fabcab91c53 100644 --- a/interface/web/admin/lib/lang/bg_remote_action.lng +++ b/interface/web/admin/lib/lang/bg_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Избери Ñървър'; $wb['btn_do_txt'] = 'Изпълни дейÑтвие'; $wb['do_osupdate_caption'] = 'Ðаправете OS - ÐÐºÑ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° отдалечен Ñървър'; -$wb['do_osupdate_desc'] = 'Това дейÑтвие прави за aptitude-y ъпгрейд на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¾Ñ‚ Ð’Ð°Ñ Ñървър.<br><br><strong>ИЗПОЛЗВÐШ ТОВРÐРТВОЙ РИСК!</strong>'; +$wb['do_osupdate_desc'] = 'Това дейÑтвие прави за apt-y ъпгрейд на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¾Ñ‚ Ð’Ð°Ñ Ñървър.<br><br><strong>ИЗПОЛЗВÐШ ТОВРÐРТВОЙ РИСК!</strong>'; $wb['do_ispcupdate_caption'] = 'Do ISPConfig 3 - Update at remote server'; $wb['do_ispcupdate_desc'] = 'Това дейÑтвие прави ISPConfig 3 обновÑване на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¾Ñ‚ Ð’Ð°Ñ Ñървър.<br><br><strong>ИЗПОЛЗВÐШ ТОВРÐРТВОЙ РИСК!</strong>'; $wb['action_scheduled'] = 'Това дейÑтвие е наÑрочено за изпълнение'; diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index fcd34e729236a8ef04c17c9b5f4e40f03dd56fbc..b9d6e648cedeb6b0666b8112acb93b5a0b9fe838 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/bg_server_php.lng b/interface/web/admin/lib/lang/bg_server_php.lng index 179a8fc357142ea401cd663697ef817237957d10..491be1aae2ecd613527e187940420d748137ed86 100644 --- a/interface/web/admin/lib/lang/bg_server_php.lng +++ b/interface/web/admin/lib/lang/bg_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/bg_software_package.lng b/interface/web/admin/lib/lang/bg_software_package.lng deleted file mode 100644 index faffe38217fb9cac04020e73e473c6c46e3caaa1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/bg_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> diff --git a/interface/web/admin/lib/lang/bg_software_package_install.lng b/interface/web/admin/lib/lang/bg_software_package_install.lng deleted file mode 100644 index 0c9bd116c37c4378c7e84b41215accb29e06e68f..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/bg_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'ИÑталиране на Ñофтуерни пакети'; -$wb['install_key_txt'] = 'ИнÑталационен ключ'; -$wb['btn_save_txt'] = 'Стартирай инÑталациÑта'; -$wb['btn_cancel_txt'] = 'Отказ'; -?> diff --git a/interface/web/admin/lib/lang/bg_software_package_list.lng b/interface/web/admin/lib/lang/bg_software_package_list.lng deleted file mode 100644 index e251c95fbd2a3d9bd3f8d01e883e8111fd489813..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/bg_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Софтуерни пакети'; -$wb['installed_txt'] = 'СтатуÑ'; -$wb['package_title_txt'] = 'Пакет'; -$wb['package_description_txt'] = 'ОпиÑание'; -$wb['action_txt'] = 'ДейÑтвие'; -$wb['toolsarea_head_txt'] = 'Пакети'; -$wb['repoupdate_txt'] = 'ОбновÑване на пакетите '; -$wb['package_id_txt'] = 'local App-ID'; -$wb['no_packages_txt'] = 'No packages available'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/bg_software_repo.lng b/interface/web/admin/lib/lang/bg_software_repo.lng deleted file mode 100644 index f5156543451cdbd127b34dfed1798a2c6dc5c58c..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/bg_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'Потребител (не е задължително)'; -$wb['repo_password_txt'] = 'Парола (не е задължително)'; -$wb['active_txt'] = 'Ðктивен'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/bg_software_repo_list.lng b/interface/web/admin/lib/lang/bg_software_repo_list.lng deleted file mode 100644 index 6471d706143866e7e1d94c76de6470d85cba5056..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/bg_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Хранилище'; -$wb['active_txt'] = 'Ðктивен'; -$wb['repo_name_txt'] = 'Хранилище'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/bg_software_update_list.lng b/interface/web/admin/lib/lang/bg_software_update_list.lng deleted file mode 100644 index c7fa6e07f5741e21f04f6c78c5bef8eb8f329210..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/bg_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Ъпдейт на Ñофтуера'; -$wb['installed_txt'] = 'ДейÑтвие'; -$wb['update_title_txt'] = 'Ъпдейт'; -$wb['version_txt'] = 'ВерÑиÑ'; -$wb['action_txt'] = 'ДейÑтвие'; -$wb['server_select_txt'] = 'Избери Ñървър'; -$wb['no_updates_txt'] = 'No updates available'; -?> diff --git a/interface/web/admin/lib/lang/bg_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng index f99465e1b643ec04e87776d2dece87988cd79bf0..1b8d10541d05febec539338ac21a0fc9eda0e6ae 100644 --- a/interface/web/admin/lib/lang/bg_system_config.lng +++ b/interface/web/admin/lib/lang/bg_system_config.lng @@ -22,6 +22,7 @@ $wb['webftp_url_txt'] = 'WebFTP URL'; $wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; $wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; $wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Разреши различни имена за вход'; $wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; $wb['mailmailinglist_url_txt'] = 'Мейлинг лиÑÑ‚ Ð°Ð´Ñ€ÐµÑ URL'; @@ -51,6 +52,7 @@ $wb['use_loadindicator_txt'] = 'Use Load Indicator'; $wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; $wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; $wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; diff --git a/interface/web/admin/lib/lang/br_remote_action.lng b/interface/web/admin/lib/lang/br_remote_action.lng index 5c888618148ca13a9ca97fc62acaa97313a6d29a..84e928dbd9134cf4482133657f611378d8373a4e 100644 --- a/interface/web/admin/lib/lang/br_remote_action.lng +++ b/interface/web/admin/lib/lang/br_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Selecionar servidor'; $wb['btn_do_txt'] = 'Executar ação'; $wb['do_osupdate_caption'] = 'Atualizar sistema operacional no servidor remoto'; -$wb['do_osupdate_desc'] = 'Esta ação fará o comando \'aptitude -y upgrade\' no servidor selecionado.<br><br><strong>UTILIZE POR SUA CONTA E RISCO!</strong>'; +$wb['do_osupdate_desc'] = 'Esta ação fará o comando \'apt -y upgrade\' no servidor selecionado.<br><br><strong>UTILIZE POR SUA CONTA E RISCO!</strong>'; $wb['do_ispcupdate_caption'] = 'Atualizar ISPConfig 3 - Atualizar o servidor remoto'; $wb['do_ispcupdate_desc'] = 'Esta ação atualizará o ISPConfig3 no servidor selecionado.<br><br><strong>UTILIZE POR SUA CONTA E RISCO!</strong>'; $wb['action_scheduled'] = 'A ação foi agendada.'; diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index 0e8d43ca8e8aec70ac114f5fd0e541917dd94e8c..ac551c588cd5917247c1bce3b1eb3a4991d0affc 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Filtro de conteúdo'; $wb['rspamd_url_txt'] = 'URL do RSPAMD'; $wb['rspamd_user_txt'] = 'Usuário RSPAMD'; $wb['rspamd_password_txt'] = 'Senha RSPAMD'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Habilitar protocolo PROXY'; $wb['vhost_proxy_protocol_http_port_txt'] = 'Porta HTTP protocolo PROXY'; $wb['vhost_proxy_protocol_https_port_txt'] = 'Porta HTTPS protocolo PROXY'; diff --git a/interface/web/admin/lib/lang/br_server_php.lng b/interface/web/admin/lib/lang/br_server_php.lng index 6524531be5b48c60366a7a8397a5b628834f5151..d0a1015833f82dfd9c183a1928e02dacfd690e8c 100644 --- a/interface/web/admin/lib/lang/br_server_php.lng +++ b/interface/web/admin/lib/lang/br_server_php.lng @@ -13,6 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Diretório PHP.ini'; $wb['php_fpm_init_script_txt'] = 'Caminho do script de inicialização PHP-FPM'; $wb['php_fpm_ini_dir_txt'] = 'Caminho do diretório PHP.ini'; $wb['php_fpm_pool_dir_txt'] = 'Caminho do diretório da pool PHP-FPM'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Ativo'; $wb['php_in_use_error'] = 'Esta versão PHP está em uso.'; $wb['php_name_in_use_error'] = 'O nome não pode ser modificado.'; +?> diff --git a/interface/web/admin/lib/lang/br_software_package.lng b/interface/web/admin/lib/lang/br_software_package.lng deleted file mode 100644 index d26e1d44509e56ecb7c4c55fda24a45eb4c2ea20..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/br_software_package.lng +++ /dev/null @@ -1,5 +0,0 @@ -<?php -$wb['package_title_txt'] = 'TÃtulo do pacote'; -$wb['package_key_txt'] = 'Chave do pacote'; -$wb['Software Package'] = 'Pacote de software'; -$wb['Modify software package details'] = 'Modificar detalhes do pacote de software'; diff --git a/interface/web/admin/lib/lang/br_software_package_install.lng b/interface/web/admin/lib/lang/br_software_package_install.lng deleted file mode 100644 index 77d24f2e153dd746822ca94f298a7b0346eda360..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/br_software_package_install.lng +++ /dev/null @@ -1,5 +0,0 @@ -<?php -$wb['head_txt'] = 'Instalar pacote de software'; -$wb['install_key_txt'] = 'Insira a chave de instalação'; -$wb['btn_save_txt'] = 'Iniciar instalação'; -$wb['btn_cancel_txt'] = 'Cancelar'; diff --git a/interface/web/admin/lib/lang/br_software_package_list.lng b/interface/web/admin/lib/lang/br_software_package_list.lng deleted file mode 100644 index 5dda114faf2cf335201854fead8adb6fcc48e2c0..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/br_software_package_list.lng +++ /dev/null @@ -1,12 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Pacotes de APPs e complementos'; -$wb['installed_txt'] = 'Estado'; -$wb['package_title_txt'] = 'Pacote'; -$wb['package_description_txt'] = 'Descrição'; -$wb['action_txt'] = 'Ação'; -$wb['toolsarea_head_txt'] = 'Pacotes'; -$wb['repoupdate_txt'] = 'Atualizar lista de pacotes'; -$wb['package_id_txt'] = 'ID local do APP'; -$wb['no_packages_txt'] = 'Nenhum pacote disponÃvel.'; -$wb['edit_txt'] = 'Editar'; -$wb['delete_txt'] = 'Remover'; diff --git a/interface/web/admin/lib/lang/br_software_repo.lng b/interface/web/admin/lib/lang/br_software_repo.lng deleted file mode 100644 index 13b4a2d87f70b47dbc818761edae15f0957a117d..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/br_software_repo.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Repositório'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'Usuário (opcional)'; -$wb['repo_password_txt'] = 'Senha (opcional)'; -$wb['active_txt'] = 'Ativo'; -$wb['Software Repository which may contain addons or updates'] = 'Repositório de software pode conter complementos ou atualizações'; diff --git a/interface/web/admin/lib/lang/br_software_repo_list.lng b/interface/web/admin/lib/lang/br_software_repo_list.lng deleted file mode 100644 index 86886e76714b2b05124d37ea28e871a471fbd1c7..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/br_software_repo_list.lng +++ /dev/null @@ -1,5 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Repositório'; -$wb['active_txt'] = 'Ativo'; -$wb['repo_name_txt'] = 'Repositório'; -$wb['repo_url_txt'] = 'URL'; diff --git a/interface/web/admin/lib/lang/br_software_update_list.lng b/interface/web/admin/lib/lang/br_software_update_list.lng deleted file mode 100644 index 77315b76c4f6d98bc6466c8018d71c84a8a87390..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/br_software_update_list.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Atualizações de Software'; -$wb['server_select_txt'] = 'Selecionar o servidor'; -$wb['installed_txt'] = 'Ação'; -$wb['update_title_txt'] = 'Atualizar'; -$wb['version_txt'] = 'Versão'; -$wb['action_txt'] = 'Ação'; -$wb['no_updates_txt'] = 'Nenhuma atualização disponÃvel.'; diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng index 58ffca080b4501f155f92e9f9e066210d6e82443..6cf3bf58bbb6ef0be3f8a84f780270eef09b8957 100644 --- a/interface/web/admin/lib/lang/br_system_config.lng +++ b/interface/web/admin/lib/lang/br_system_config.lng @@ -24,8 +24,10 @@ $wb['ftpuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de $wb['shelluser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário shell.'; $wb['webdavuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário Webdav.'; $wb['dblist_phpmyadmin_link_txt'] = 'Link para o PHPMyAdmin'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Permitir nome de usuário personalizado'; $wb['mailboxlist_webmail_link_txt'] = 'Link para o Webmail'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Exibir aba de auto-resposta nos detalhes da conta de email'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Exibir aba de filtro de emails nos detalhes da conta de email'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Exibir aba de filtros personalizados de email nos detalhes da conta de email'; diff --git a/interface/web/admin/lib/lang/ca_remote_action.lng b/interface/web/admin/lib/lang/ca_remote_action.lng index cb7800aca6db155da59f335f2070c2a7bb64c43b..667f382fbbdbafeab52971e520bd57655a7f4487 100644 --- a/interface/web/admin/lib/lang/ca_remote_action.lng +++ b/interface/web/admin/lib/lang/ca_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Select Server'; $wb['btn_do_txt'] = 'Execute action'; $wb['do_osupdate_caption'] = 'Do OS-Update at remote server'; -$wb['do_osupdate_desc'] = 'This Action does a \'aptitude -y upgrade\' at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; +$wb['do_osupdate_desc'] = 'This Action does a \'apt -y upgrade\' at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['do_ispcupdate_caption'] = 'Do ISPConfig 3 - Update at remote server'; $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['action_scheduled'] = 'The action is scheduled for execution'; diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index 2e02e31c6bdf2d7da192217840790a6b67cab547..25ed761836cafb2f1216212c3582bfe3c6abcd29 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/ca_server_php.lng b/interface/web/admin/lib/lang/ca_server_php.lng index 179a8fc357142ea401cd663697ef817237957d10..491be1aae2ecd613527e187940420d748137ed86 100644 --- a/interface/web/admin/lib/lang/ca_server_php.lng +++ b/interface/web/admin/lib/lang/ca_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/ca_software_package.lng b/interface/web/admin/lib/lang/ca_software_package.lng deleted file mode 100644 index faffe38217fb9cac04020e73e473c6c46e3caaa1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ca_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> diff --git a/interface/web/admin/lib/lang/ca_software_package_install.lng b/interface/web/admin/lib/lang/ca_software_package_install.lng deleted file mode 100644 index 5c8b756434ce27d67e479a96383bbee01bce4f1f..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ca_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Install software package'; -$wb['install_key_txt'] = 'Enter install key'; -$wb['btn_save_txt'] = 'Start Installation'; -$wb['btn_cancel_txt'] = 'Cancel'; -?> diff --git a/interface/web/admin/lib/lang/ca_software_package_list.lng b/interface/web/admin/lib/lang/ca_software_package_list.lng deleted file mode 100644 index 2909d8376e51f4a801bf99fb0e0a3f191558d2a4..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ca_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Apps & Addon packages'; -$wb['installed_txt'] = 'Status'; -$wb['package_title_txt'] = 'Package'; -$wb['package_description_txt'] = 'Description'; -$wb['action_txt'] = 'Action'; -$wb['toolsarea_head_txt'] = 'Packages'; -$wb['repoupdate_txt'] = 'Update package list'; -$wb['package_id_txt'] = 'local App-ID'; -$wb['no_packages_txt'] = 'No packages available'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/ca_software_repo.lng b/interface/web/admin/lib/lang/ca_software_repo.lng deleted file mode 100644 index f2cbbb2c25776ab5f1794e7102ad264a98144049..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ca_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'User (optional)'; -$wb['repo_password_txt'] = 'Password (optional)'; -$wb['active_txt'] = 'Active'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/ca_software_repo_list.lng b/interface/web/admin/lib/lang/ca_software_repo_list.lng deleted file mode 100644 index b7a219ffa8e2f6d389fabdc5386286a24fc2a11a..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ca_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Repository'; -$wb['active_txt'] = 'Active'; -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/ca_software_update_list.lng b/interface/web/admin/lib/lang/ca_software_update_list.lng deleted file mode 100644 index fe7639125cd2634fa809d9a6592e9e9fb21e84bb..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ca_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Software updates'; -$wb['server_select_txt'] = 'Select server'; -$wb['installed_txt'] = 'Action'; -$wb['update_title_txt'] = 'Update'; -$wb['version_txt'] = 'Version'; -$wb['action_txt'] = 'Action'; -$wb['no_updates_txt'] = 'No updates available'; -?> diff --git a/interface/web/admin/lib/lang/ca_system_config.lng b/interface/web/admin/lib/lang/ca_system_config.lng index d8bc0e2d48a435b69b1db7584d7e53601491ddf9..9f9f3622884342a93ed6088ee9c4956ec9eaa782 100644 --- a/interface/web/admin/lib/lang/ca_system_config.lng +++ b/interface/web/admin/lib/lang/ca_system_config.lng @@ -24,8 +24,10 @@ $wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.'; $wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.'; $wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; $wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Allow custom login name'; $wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; diff --git a/interface/web/admin/lib/lang/ca_users_list.lng b/interface/web/admin/lib/lang/ca_users_list.lng index dec5cc2c04f2a98ac737ac7f6aefc743831a1938..fb1c7bc6ddb8acdcf6dc66b9572f516b935fbf63 100644 --- a/interface/web/admin/lib/lang/ca_users_list.lng +++ b/interface/web/admin/lib/lang/ca_users_list.lng @@ -5,5 +5,5 @@ $wb['client_id_txt'] = 'User ID'; $wb['active_txt'] = 'Active'; $wb['groups_txt'] = 'Groups'; $wb['add_new_record_txt'] = 'Add new user'; -$wb['warning_txt'] = '<b>WARNING:</b> Do not edit or modify any user settings here. Use the Client- and Reseller settings in the Client module instead. Modifying or changing users or groups here may cause data loss!'; +$wb['warning_txt'] = '<b>WARNING:</b> Do not edit or modify any client user settings here. Use the client- and reseller settings in the client module instead. Modifying or changing client users or groups here may cause data loss!'; ?> diff --git a/interface/web/admin/lib/lang/cz_remote_action.lng b/interface/web/admin/lib/lang/cz_remote_action.lng index c361f6d664d9054a7491b88dc4f088688f09291e..5f7fb604fcbd7e59871dd8397bd77ffc975a4aa3 100644 --- a/interface/web/admin/lib/lang/cz_remote_action.lng +++ b/interface/web/admin/lib/lang/cz_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Zvolit server'; $wb['btn_do_txt'] = 'Provést akci'; $wb['do_osupdate_caption'] = 'Aktualizace operaÄnÃho systému na vzdáleném serveru.'; -$wb['do_osupdate_desc'] = 'Tato akce provede \"aptitude -y\" aktualizaci na vybraném serveru.<br><br><strong>POUŽITà TÉTO AKCE NA VLASTNà NEBEZPEČà !</strong>'; +$wb['do_osupdate_desc'] = 'Tato akce provede \"apt -y\" aktualizaci na vybraném serveru.<br><br><strong>POUŽITà TÉTO AKCE NA VLASTNà NEBEZPEČà !</strong>'; $wb['do_ispcupdate_caption'] = 'Provedenà ISPConfig 3 - aktualizace na vzdáleném serveru'; $wb['do_ispcupdate_desc'] = 'Tato akce provede \"ISPConfig 3\" aktualizaci na vaÅ¡em vybraném serveru.<br><br><strong>POUŽITà TÉTO AKCE NA VLASTNà NEBEZPEČà !</strong>'; $wb['action_scheduled'] = 'Akce je naplánována na provedenÃ'; diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index 633db75fbdbb02daa5ddff7d4f4e23c10ba24e75..6da8dfc0bb4989c6a7e179417fdc1afe7693f1f7 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Filtr obsahu'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd heslo'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/cz_server_php.lng b/interface/web/admin/lib/lang/cz_server_php.lng index d955c3b633776afb14db56b142d025a2fb85f1da..c1c67f05ef6673858a11f164aa5a2e0f6d483c0c 100644 --- a/interface/web/admin/lib/lang/cz_server_php.lng +++ b/interface/web/admin/lib/lang/cz_server_php.lng @@ -13,6 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Cesta k php.ini adresáři'; $wb['php_fpm_init_script_txt'] = 'Cesta k PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Cesta k php.ini adresáři'; $wb['php_fpm_pool_dir_txt'] = 'Cesta k PHP-FPM pool adresáři'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'AktivnÃ'; $wb['php_in_use_error'] = 'This PHP-Version is in use.'; $wb['php_name_in_use_error'] = 'The name can not be changed.'; +?> diff --git a/interface/web/admin/lib/lang/cz_software_package.lng b/interface/web/admin/lib/lang/cz_software_package.lng deleted file mode 100644 index d4dc8af0b2cf9168ea900b84d92747fa3e091267..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/cz_software_package.lng +++ /dev/null @@ -1,5 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; diff --git a/interface/web/admin/lib/lang/cz_software_package_install.lng b/interface/web/admin/lib/lang/cz_software_package_install.lng deleted file mode 100644 index 74837beaff75ef67bbc62d8a195b3f9332c67da7..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/cz_software_package_install.lng +++ /dev/null @@ -1,5 +0,0 @@ -<?php -$wb['head_txt'] = 'Instalace software'; -$wb['install_key_txt'] = 'Enter install key'; -$wb['btn_save_txt'] = 'Spustit instalaci'; -$wb['btn_cancel_txt'] = 'ZruÅ¡it'; diff --git a/interface/web/admin/lib/lang/cz_software_package_list.lng b/interface/web/admin/lib/lang/cz_software_package_list.lng deleted file mode 100644 index 433cdcffd0809730e56c4500b49d890e03452746..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/cz_software_package_list.lng +++ /dev/null @@ -1,12 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Softwarové balÃÄky'; -$wb['installed_txt'] = 'Stav'; -$wb['package_title_txt'] = 'BalÃÄek'; -$wb['package_description_txt'] = 'Popis'; -$wb['action_txt'] = 'Akce'; -$wb['toolsarea_head_txt'] = 'BalÃÄky'; -$wb['repoupdate_txt'] = 'Aktualizace seznamu balÃků'; -$wb['package_id_txt'] = 'mÃstnà App-ID'; -$wb['no_packages_txt'] = 'Žádné balÃÄky nejsou k dispozici'; -$wb['edit_txt'] = 'Upravit'; -$wb['delete_txt'] = 'Smazat'; diff --git a/interface/web/admin/lib/lang/cz_software_repo.lng b/interface/web/admin/lib/lang/cz_software_repo.lng deleted file mode 100644 index beca429d9a376beb6eb1dac0054b826418951ea9..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/cz_software_repo.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Název zdroje'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'Uživatel (volitelné)'; -$wb['repo_password_txt'] = 'Heslo (volitelné)'; -$wb['active_txt'] = 'AktivnÃ'; -$wb['Software Repository which may contain addons or updates'] = 'Softwarové zdroje, které mohou obsahovat addony nebo aktualizace'; diff --git a/interface/web/admin/lib/lang/cz_software_repo_list.lng b/interface/web/admin/lib/lang/cz_software_repo_list.lng deleted file mode 100644 index 8d434ca336ee81b42ed85434ed412eaf8d65e70c..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/cz_software_repo_list.lng +++ /dev/null @@ -1,5 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Zdroje repozitářů'; -$wb['active_txt'] = 'AktivnÃ'; -$wb['repo_name_txt'] = 'Název zdroje'; -$wb['repo_url_txt'] = 'URL'; diff --git a/interface/web/admin/lib/lang/cz_software_update_list.lng b/interface/web/admin/lib/lang/cz_software_update_list.lng deleted file mode 100644 index 921db7594d7d5b13a2f37915a928507702f91202..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/cz_software_update_list.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Softwarové aktualizace'; -$wb['server_select_txt'] = 'Vybrat server'; -$wb['installed_txt'] = 'Akce'; -$wb['update_title_txt'] = 'Aktualizovat'; -$wb['version_txt'] = 'Verze'; -$wb['action_txt'] = 'Akce'; -$wb['no_updates_txt'] = 'Žádné aktualizace nejsou k dispozici'; diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng index 7db312097c3348cf9fa47ed2a908a526c9471d69..23dbc9c41efa0b41775599e1a73a7d1a8e939957 100644 --- a/interface/web/admin/lib/lang/cz_system_config.lng +++ b/interface/web/admin/lib/lang/cz_system_config.lng @@ -25,6 +25,7 @@ $wb['new_domain_txt'] = 'HTML vytvoÅ™it novou doménu'; $wb['webftp_url_txt'] = 'WebFTP URL'; $wb['admin_mail_txt'] = 'E-mail Administrátora'; $wb['admin_name_txt'] = 'Jméno Administrátora'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Povolit vlastnà pÅ™ihlaÅ¡ovacà jméno u e-mailové schránky'; $wb['mailmailinglist_link_txt'] = 'Ikonový odkaz na aplikaci E-mailových konferencà seznamu e-mailových konferencÃ'; $wb['mailmailinglist_url_txt'] = 'E-mailové konference URL'; @@ -48,6 +49,7 @@ $wb['use_combobox_txt'] = 'Použità jQuery UI Combobox'; $wb['use_loadindicator_txt'] = 'Použità indikátoru zatÞenÃ'; $wb['f5_to_reload_js_txt'] = 'Pokud vypnete tuto volbu, zÅ™ejmÄ› budete muset použÃvat klávesu F5, aby internetový prohlÞeÄ znovu naÄetl JavaScript knihovny nebo budete muset ruÄnÄ› vyprázdňovat mezipaměť (cache) vaÅ¡eho internetového prohlÞeÄe.'; $wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Ukázat kartu automatická odpovÄ›Ä v podrobnostech u poÅ¡tovnà schránky'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Ukázat kartu poÅ¡tovnà filtry v podrobnostech u poÅ¡tovnà schránky'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Ukázat kartu vlastnà pravidla v podrobnostech u poÅ¡tovnà schránky'; diff --git a/interface/web/admin/lib/lang/de_remote_action.lng b/interface/web/admin/lib/lang/de_remote_action.lng index 3bb968d0137b30626b02e80c92b42566d6fbcbec..324c18331154f059f02f56308b2c2897eff7584d 100644 --- a/interface/web/admin/lib/lang/de_remote_action.lng +++ b/interface/web/admin/lib/lang/de_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Server auswählen'; $wb['btn_do_txt'] = 'Aktion ausführen'; $wb['do_osupdate_caption'] = 'Betriebssystem Update auf entferntem Server ausführen'; -$wb['do_osupdate_desc'] = 'Diese Aktion wird ein aptitude -y upgrade auf dem ausgewählten Server ausführen.<br><br><strong>DIES GESCHIEHT AUF IHRE EIGENE VERANTWORTUNG!</strong>'; +$wb['do_osupdate_desc'] = 'Diese Aktion wird ein apt -y upgrade auf dem ausgewählten Server ausführen.<br><br><strong>DIES GESCHIEHT AUF IHRE EIGENE VERANTWORTUNG!</strong>'; $wb['do_ispcupdate_caption'] = 'ISPConfig 3 Update auf entferntem Server ausführen'; $wb['do_ispcupdate_desc'] = 'Diese Aktion wird ein Update des ISPConfig 3 Systems auf Ihrem ausgewählten Server ausführen.<br><br><strong>DIES GESCHIEHT AUF IHRE EIGENE VERANTWORTUNG!</strong>'; $wb['action_scheduled'] = 'Die Aktion wurde zur Ausführung vorgemerkt'; diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index e287b9a622ba535b131ff89973df109f0a6d7478..d0b43059c47cf52c0dea5cc5f5363007d7c5edb2 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content-Filter'; $wb['rspamd_url_txt'] = 'Rspamd-URL'; $wb['rspamd_user_txt'] = 'Rspamd-Benutzer'; $wb['rspamd_password_txt'] = 'Rspamd-Passwort'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/de_server_php.lng b/interface/web/admin/lib/lang/de_server_php.lng index f43e79b4af19076cf177201298c3b6988e959b48..b3ad5d991331f2ed1f932f7e271544e3e00f1ce6 100644 --- a/interface/web/admin/lib/lang/de_server_php.lng +++ b/interface/web/admin/lib/lang/de_server_php.lng @@ -13,6 +13,7 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Pfad zum php.ini Verzeichnis'; $wb['php_fpm_init_script_txt'] = 'Pfad zum PHP-FPM Init Script'; $wb['php_fpm_ini_dir_txt'] = 'Pfad zum php.ini Verzeichnis'; $wb['php_fpm_pool_dir_txt'] = 'Pfad zum PHP-FPM Pool Verzeichnis'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Aktiv'; $wb['php_in_use_error'] = 'Diese PHP-Version wird noch benutzt.'; $wb['php_name_in_use_error'] = 'Der Name kann nicht geändert werden.'; diff --git a/interface/web/admin/lib/lang/de_software_package.lng b/interface/web/admin/lib/lang/de_software_package.lng deleted file mode 100644 index 13b3d996c30489a23bf3c02ab9f2935463bf8e5a..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/de_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Softwarepaket Titel'; -$wb['package_key_txt'] = 'Softwarepaket Schlüssel'; -$wb['Software Package'] = 'Softwarepaket'; -$wb['Modify software package details'] = 'Softwarepaket Einstellungen bearbeiten'; -?> diff --git a/interface/web/admin/lib/lang/de_software_package_install.lng b/interface/web/admin/lib/lang/de_software_package_install.lng deleted file mode 100644 index 1ef69d13d32b0fd9cebc50cefc2e3b7b61623513..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/de_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Softwarepaket installieren'; -$wb['install_key_txt'] = 'Installationskey eingeben'; -$wb['btn_save_txt'] = 'Installation starten'; -$wb['btn_cancel_txt'] = 'Abbrechen'; -?> diff --git a/interface/web/admin/lib/lang/de_software_package_list.lng b/interface/web/admin/lib/lang/de_software_package_list.lng deleted file mode 100644 index 75b7504390489492a4d84de033807463aaef0540..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/de_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Softwarepakete'; -$wb['installed_txt'] = 'Status'; -$wb['package_title_txt'] = 'Paket'; -$wb['package_description_txt'] = 'Beschreibung'; -$wb['action_txt'] = 'Aktion'; -$wb['toolsarea_head_txt'] = 'Pakete'; -$wb['repoupdate_txt'] = 'Softwarepakete Liste updaten'; -$wb['package_id_txt'] = 'Lokale App ID'; -$wb['no_packages_txt'] = 'Keine Pakete verfügbar'; -$wb['edit_txt'] = 'Bearbeiten'; -$wb['delete_txt'] = 'Löschen'; -?> diff --git a/interface/web/admin/lib/lang/de_software_repo.lng b/interface/web/admin/lib/lang/de_software_repo.lng deleted file mode 100644 index 242611cd08616fc1159c5dca536282ce672098f8..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/de_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'Benutzername (optional)'; -$wb['repo_password_txt'] = 'Passwort (optional)'; -$wb['active_txt'] = 'Aktiv'; -$wb['Software Repository which may contain addons or updates'] = 'Software Archiv, das Add-Ons oder Updates enthalten kann'; -?> diff --git a/interface/web/admin/lib/lang/de_software_repo_list.lng b/interface/web/admin/lib/lang/de_software_repo_list.lng deleted file mode 100644 index db6f49fd4edd70c55ebc84f05dc84fc704e861ce..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/de_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Repository'; -$wb['active_txt'] = 'Aktiv'; -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/de_software_update_list.lng b/interface/web/admin/lib/lang/de_software_update_list.lng deleted file mode 100644 index cf31e88154c60bfcdc82fb9b9f778dbbf737eb9b..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/de_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Softwareupdates'; -$wb['server_select_txt'] = 'Server wählen'; -$wb['installed_txt'] = 'Aktion'; -$wb['update_title_txt'] = 'Update'; -$wb['version_txt'] = 'Version'; -$wb['action_txt'] = 'Aktion'; -$wb['no_updates_txt'] = 'Keine Updates verfügbar'; -?> diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng index 4a862a2d4adb5960dca5a816db659b773e563c55..7d372a820e9a56e1ce54ca429c6c2ea28d24ca86 100644 --- a/interface/web/admin/lib/lang/de_system_config.lng +++ b/interface/web/admin/lib/lang/de_system_config.lng @@ -31,6 +31,7 @@ $wb['use_domain_module_txt'] = 'Domain Limits im Kundenmodul benutzen, um neue D $wb['use_domain_module_hint'] = 'Falls Sie die Domain Limits benutzen, können Ihre Kunden nur eine der Domains auswählen, die der Admin für sie angelegt hat. Die Kunden können das Domain-Feld nicht frei editieren. Sie müssen sich neu einloggen, wenn Sie diesen Wert ändern.'; $wb['new_domain_txt'] = 'HTML Text zum Anlegen einer neuen Domain'; $wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Abweichenden Login Namen erlauben'; $wb['mailmailinglist_link_txt'] = 'Link zur Mailingliste in der Mailinglisten Ãœbersicht'; $wb['mailmailinglist_url_txt'] = 'Mailinglisten URL'; @@ -51,6 +52,7 @@ $wb['f5_to_reload_js_txt'] = 'Wenn Sie den Wert ändern, müssen Sie F5 drücken $wb['phpmyadmin_url_error_regex'] = 'Falsche phpMyAdmin URL'; $wb['client_username_web_check_disabled_txt'] = 'Deaktiviere die Kunden Benutzernamen Ãœberprüfung für den Begriff <b>web<b>.'; $wb['backups_include_into_web_quota_txt'] = 'Backups in Web Quota hinzuzählen.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Zeige Autoresponder Reiter in E-Mail Kontodetails'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Zeige E-Mail Filter Reiter in E-Mail Kontodetails'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Zeige Benutzerregel Reiter in E-Mail Kontodetails'; diff --git a/interface/web/admin/lib/lang/dk_remote_action.lng b/interface/web/admin/lib/lang/dk_remote_action.lng index a5366d9175b4bab6be04a30686e6b3f732a70953..53c12f6adfb2d3fe5daf95764f544597f21f4392 100644 --- a/interface/web/admin/lib/lang/dk_remote_action.lng +++ b/interface/web/admin/lib/lang/dk_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Vælg Server(e)'; $wb['btn_do_txt'] = 'Udfør handling'; $wb['do_osupdate_caption'] = 'Udfør OS-Opdatering pÃ¥ fjern server'; -$wb['do_osupdate_desc'] = 'Denne Handling udfør en \'aptitude -y upgrade\' pÃ¥ den valgte server.<br><br><strong>BRUG DETTE PÃ… EGEN RISIKO!</strong>'; +$wb['do_osupdate_desc'] = 'Denne Handling udfør en \'apt -y upgrade\' pÃ¥ den valgte server.<br><br><strong>BRUG DETTE PÃ… EGEN RISIKO!</strong>'; $wb['do_ispcupdate_caption'] = 'Udfør ISPConfig 3 - Opdatering pÃ¥ fjern-server'; $wb['do_ispcupdate_desc'] = 'Denne Handling udfør en ISPConfig 3 opdatering pÃ¥ den valgte server.<br><br><strong>BRUG DETTE PÃ… EGEN RISIKO!</strong>'; $wb['action_scheduled'] = 'Handlingen er planlagt til udførelse'; diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index 77a29251d5f04bf555efac9dcc375a292ac4ba65..b1ebcec391b4c26a45b1ee7edc204c1b85242560 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/dk_server_php.lng b/interface/web/admin/lib/lang/dk_server_php.lng index ff8586f5ea7b5b9fb50d821c59fb34428d3a3436..db6ef1f98a2f0f2e7955afb872f06583c2a53922 100644 --- a/interface/web/admin/lib/lang/dk_server_php.lng +++ b/interface/web/admin/lib/lang/dk_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Sti til php.ini mappe'; $wb['php_fpm_init_script_txt'] = 'Sti til PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Sti til php.ini mappe'; $wb['php_fpm_pool_dir_txt'] = 'Sti til PHP-FPM pool mappe'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/dk_software_package.lng b/interface/web/admin/lib/lang/dk_software_package.lng deleted file mode 100644 index 86f45dc91ef21cd0c1f506379c272d5dc71921e9..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/dk_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Pakke Titel'; -$wb['package_key_txt'] = 'Pakke Nøgle'; -$wb['Software Package'] = 'Software Pakke'; -$wb['Modify software package details'] = 'Ændre software pakke detaljer'; -?> diff --git a/interface/web/admin/lib/lang/dk_software_package_install.lng b/interface/web/admin/lib/lang/dk_software_package_install.lng deleted file mode 100644 index fd9211652c73e2f188f48de99b97f2bff8738cee..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/dk_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Install software pakke'; -$wb['install_key_txt'] = 'Indtast installations nøgle'; -$wb['btn_save_txt'] = 'Start Installation'; -$wb['btn_cancel_txt'] = 'Annullere'; -?> diff --git a/interface/web/admin/lib/lang/dk_software_package_list.lng b/interface/web/admin/lib/lang/dk_software_package_list.lng deleted file mode 100644 index 3fb5399eaecb8a650547e99648e532aa95a6ccfa..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/dk_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Apps & Tilføjelses pakker'; -$wb['installed_txt'] = 'Status'; -$wb['package_title_txt'] = 'Pakke'; -$wb['package_description_txt'] = 'Beskrivelse'; -$wb['action_txt'] = 'Handling'; -$wb['toolsarea_head_txt'] = 'Pakker'; -$wb['repoupdate_txt'] = 'Opdater pakke listen'; -$wb['package_id_txt'] = 'lokal App-ID'; -$wb['no_packages_txt'] = 'Ingen pakker tilgængelig'; -$wb['edit_txt'] = 'Rediger'; -$wb['delete_txt'] = 'Slet'; -?> diff --git a/interface/web/admin/lib/lang/dk_software_repo.lng b/interface/web/admin/lib/lang/dk_software_repo.lng deleted file mode 100644 index 2c506cdc6b6d9decbf8dda1827104b17c0aaf6b7..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/dk_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Arkiv'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'Bruger (valgfri)'; -$wb['repo_password_txt'] = 'Adgangskode (valgfri)'; -$wb['active_txt'] = 'Aktiv'; -$wb['Software Repository which may contain addons or updates'] = 'Software Arkiv som kan indeholde tilføjelser eller opdateringer'; -?> diff --git a/interface/web/admin/lib/lang/dk_software_repo_list.lng b/interface/web/admin/lib/lang/dk_software_repo_list.lng deleted file mode 100644 index aa33919cbd6b8e088b3e5dd5fc9b371b97c405f7..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/dk_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Arkiv'; -$wb['active_txt'] = 'Aktiv'; -$wb['repo_name_txt'] = 'Arkiv'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/dk_software_update_list.lng b/interface/web/admin/lib/lang/dk_software_update_list.lng deleted file mode 100644 index 8a8e8686af47c83de5cb82922cac2bd30f4709a9..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/dk_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Software opdateringer'; -$wb['server_select_txt'] = 'Vælg server'; -$wb['installed_txt'] = 'Handling'; -$wb['update_title_txt'] = 'Opdater'; -$wb['version_txt'] = 'Version'; -$wb['action_txt'] = 'Handling'; -$wb['no_updates_txt'] = 'Ingen opdateringer tilgængelig'; -?> diff --git a/interface/web/admin/lib/lang/dk_system_config.lng b/interface/web/admin/lib/lang/dk_system_config.lng index eb96004421481829f5d4ae3d2e3b9c8568ec0637..18160789a9d8bb83152ba44547c8ae35fe521326 100644 --- a/interface/web/admin/lib/lang/dk_system_config.lng +++ b/interface/web/admin/lib/lang/dk_system_config.lng @@ -22,6 +22,7 @@ $wb['ftpuser_prefix_error_regex'] = 'Char ikke tilladt i ftp bruger prefix.'; $wb['shelluser_prefix_error_regex'] = 'Char ikke tilladt i shell bruger prefix.'; $wb['webdavuser_prefix_error_regex'] = 'Char ikke tilladt i webdav bruger prefix.'; $wb['dblist_phpmyadmin_link_txt'] = 'Link til phpmyadmin i DB liste'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Tillad brugerdefinerede login-navn'; $wb['mailboxlist_webmail_link_txt'] = 'Link til webmail i Postboks liste'; $wb['webmail_url_txt'] = 'Webmail URL'; @@ -48,6 +49,7 @@ $wb['use_combobox_txt'] = 'Brug jQuery UI Combobox'; $wb['use_loadindicator_txt'] = 'Brug Load Indicator'; $wb['f5_to_reload_js_txt'] = 'Hvis du ændrer dette, kan du blive nødt til at trykke pÃ¥ F5 for at browseren genindlæser JavaScript-biblioteker eller tømme browserens cache.'; $wb['client_username_web_check_disabled_txt'] = 'Deaktiver klient-brugernavns check for ordet \'web\'.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Vis autoresponder tab i mail kontooplysninger'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Vis mail filter tab i mail kontooplysninger'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Vis custom mailfilter tab i mail kontooplysninger'; diff --git a/interface/web/admin/lib/lang/el_remote_action.lng b/interface/web/admin/lib/lang/el_remote_action.lng index ff63fd59354a2d9870b3beda773a9ada68baf985..18363323251764dd4f1e2bf6d29eca23b3bb2ec5 100644 --- a/interface/web/admin/lib/lang/el_remote_action.lng +++ b/interface/web/admin/lib/lang/el_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Επιλογή Server'; $wb['btn_do_txt'] = 'ΕκτÎλεση ενÎÏγειας'; $wb['do_osupdate_caption'] = 'Εκκίνηση αναβάθμισης λειτουÏÎ³Î¹ÎºÎ¿Ï ÏƒÏ…ÏƒÏ„Î®Î¼Î±Ï„Î¿Ï‚ στον απομακÏυσμÎνο server'; -$wb['do_osupdate_desc'] = 'Αυτή η ενÎÏγεια εκτελεί την εντολή aptitude -y upgrade στον επιλεγμÎνο σας server.<br><br><strong>ΧΡΗΣΙΜΟΠΟΙΗΣΤΕ ΤΟ ΜΕ ΔΙΚΗ ΣΑΣ ΕΥΘΥÎΗ!</strong>'; +$wb['do_osupdate_desc'] = 'Αυτή η ενÎÏγεια εκτελεί την εντολή apt -y upgrade στον επιλεγμÎνο σας server.<br><br><strong>ΧΡΗΣΙΜΟΠΟΙΗΣΤΕ ΤΟ ΜΕ ΔΙΚΗ ΣΑΣ ΕΥΘΥÎΗ!</strong>'; $wb['do_ispcupdate_caption'] = 'Εκκίνηση αναβάθμισης ISPConfig 3 στον απομακÏυσμÎνο server'; $wb['do_ispcupdate_desc'] = 'Αυτή η ενÎÏγεια κάνει αναβάθμιση στο ISPConfig3 στον επιλεγμÎνο σας server.<br><br><strong>ΧΡΗΣΙΜΟΠΟΙΗΣΤΕ ΤΟ ΜΕ ΔΙΚΗ ΣΑΣ ΕΥΘΥÎΗ!</strong>'; $wb['action_scheduled'] = 'Η ενÎÏγεια Ï€ÏογÏαμματίστηκε για εκτÎλεση'; diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index 091362450336ed29a7f1722e0654a1b2742fcff8..b147f15e5c98954b23c73b43148a5a74362f366a 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/el_server_php.lng b/interface/web/admin/lib/lang/el_server_php.lng index 179a8fc357142ea401cd663697ef817237957d10..491be1aae2ecd613527e187940420d748137ed86 100644 --- a/interface/web/admin/lib/lang/el_server_php.lng +++ b/interface/web/admin/lib/lang/el_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/el_software_package.lng b/interface/web/admin/lib/lang/el_software_package.lng deleted file mode 100644 index faffe38217fb9cac04020e73e473c6c46e3caaa1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/el_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> diff --git a/interface/web/admin/lib/lang/el_software_package_install.lng b/interface/web/admin/lib/lang/el_software_package_install.lng deleted file mode 100644 index 5e3d0fd4022ce48fac39c9379b5de0774c46510b..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/el_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Εγκατάσταση πακÎτου λογισμικοÏ'; -$wb['install_key_txt'] = 'Εισαγωγή ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï ÎµÎ³ÎºÎ±Ï„Î¬ÏƒÏ„Î±ÏƒÎ·Ï‚'; -$wb['btn_save_txt'] = 'Εκκίνηση εγκατάστασης'; -$wb['btn_cancel_txt'] = 'ΑκÏÏωση'; -?> diff --git a/interface/web/admin/lib/lang/el_software_package_list.lng b/interface/web/admin/lib/lang/el_software_package_list.lng deleted file mode 100644 index 1553ea1ceafeca4b43be5bd163c9b3fc47ae9864..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/el_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'ΠακÎτα ΕφαÏμογών & Î Ïόσθετων'; -$wb['installed_txt'] = 'Κατάσταση'; -$wb['package_title_txt'] = 'ΠακÎτο'; -$wb['package_description_txt'] = 'ΠεÏιγÏαφή'; -$wb['action_txt'] = 'ΕνÎÏγεια'; -$wb['toolsarea_head_txt'] = 'ΠακÎτα'; -$wb['repoupdate_txt'] = 'ΕνημÎÏωση λίστας πακκÎτων'; -$wb['package_id_txt'] = 'τοπικό App-ID'; -$wb['no_packages_txt'] = 'No packages available'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/el_software_repo.lng b/interface/web/admin/lib/lang/el_software_repo.lng deleted file mode 100644 index 3b12d3fd874fd4e1945f6ce2f234e2f3d619ae24..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/el_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'ΑποθετήÏιο'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'ΧÏήστης (Î ÏοαιÏετικό)'; -$wb['repo_password_txt'] = 'Συνθηματικό (Î ÏοαιÏετικό)'; -$wb['active_txt'] = 'ΕνεÏγό'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/el_software_repo_list.lng b/interface/web/admin/lib/lang/el_software_repo_list.lng deleted file mode 100644 index deb896a719c990ba6df4b00d5114b8dc1ac62f43..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/el_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'ΑποθετήÏιο'; -$wb['active_txt'] = 'ΕνεÏγό'; -$wb['repo_name_txt'] = 'ΑποθετήÏιο'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/el_software_update_list.lng b/interface/web/admin/lib/lang/el_software_update_list.lng deleted file mode 100644 index 42100d0c8903ad84f65f8f5137feee995b83d3d5..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/el_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Αναβαθμίσεις ΛογισμικοÏ'; -$wb['server_select_txt'] = 'Επιλογή server'; -$wb['installed_txt'] = 'ΕνÎÏγεια'; -$wb['update_title_txt'] = 'ΕνημÎÏωση'; -$wb['version_txt'] = 'Έκδοση'; -$wb['action_txt'] = 'ΕνÎÏγεια'; -$wb['no_updates_txt'] = 'No updates available'; -?> diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng index 68e10e37fcf941463c9c7a63ff15bedd32b7e491..7e2df97a492f642c466fc3a0095564329f75f4e3 100644 --- a/interface/web/admin/lib/lang/el_system_config.lng +++ b/interface/web/admin/lib/lang/el_system_config.lng @@ -23,6 +23,7 @@ $wb['use_domain_module_txt'] = 'ΧÏήση του αÏθÏώματος-domain γ $wb['use_domain_module_hint'] = 'Αν χÏησιμοποιήσετε αυτό το άÏθÏωμα, οι πελάτες σας μποÏοÏν μόνο να διαλÎξουν Îνα από τα domains που δημιοÏÏγησε για αυτοÏÏ‚ ο διαχειÏιστής. Δεν μποÏοÏν να επεξεÏγαστοÏν ελεÏθεÏα τα πεδία του domain.Î ÏÎπει να επανασυνδεθείτε αν αλλάξετε αυτή την τιμή, για να γίνουν οι αλλαγÎÏ‚ σας, οÏατÎÏ‚.'; $wb['new_domain_txt'] = 'HTML για την δημιουÏγία domain'; $wb['webftp_url_txt'] = 'URL του WebFTP'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Αποδοχή Ï€ÏοσαÏμοσμÎνου ονόματος login'; $wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; $wb['mailmailinglist_url_txt'] = 'URL της Mailing list '; @@ -51,6 +52,7 @@ $wb['use_loadindicator_txt'] = 'ΧÏήση Load Indicator (ενδεικτή φό $wb['f5_to_reload_js_txt'] = 'Αν το αλλάξετε, ίσως Ï€ÏÎπει να πατήσετε το F5 για να κάνετε τον φυλλομετÏητη να ξαναφοÏτώσει τις βιβλιοθήκες JavaScript ή να αδείασετε την cache του φυλλομετÏητή.'; $wb['client_username_web_check_disabled_txt'] = 'ΑπενεÏγοποίηση ελÎγχου στο όνομα χÏήστη για την λÎξη \'web\'.'; $wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Εμφάνιση της καÏÏ„Îλας Αυτόματης Απάντησης στις λεπτομÎÏειες του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï mail'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Εμφάνιση της καÏÏ„Îλας ΦίλτÏα mail στις λεπτομÎÏειες του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï mail'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Εμφάνιση της καÏÏ„Îλας Î ÏοσαÏμοσμÎνοι Κανόνες στις λεπτομÎÏειες του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï mail'; diff --git a/interface/web/admin/lib/lang/en_remote_action.lng b/interface/web/admin/lib/lang/en_remote_action.lng index 963eb473faa6e6b0ea4c5e23fe2122a0916392fe..16b45fada9adeb35902c30d5d84cc473af855fa1 100644 --- a/interface/web/admin/lib/lang/en_remote_action.lng +++ b/interface/web/admin/lib/lang/en_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Select Server'; $wb['btn_do_txt'] = 'Execute action'; $wb['do_osupdate_caption'] = 'Do OS-Update at remote server'; -$wb['do_osupdate_desc'] = 'This Action does a "aptitude -y upgrade" at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; +$wb['do_osupdate_desc'] = 'This Action does a "apt -y upgrade" at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['do_ispcupdate_caption'] = 'Do ISPConfig 3 - Update at remote server'; $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['action_scheduled'] = 'The action is scheduled for execution'; diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 3df6f02dfb259848bd0acf9bca6c82fcb4d68858..4125b2648ea4f13786b613c2ab55ac5fd11d1db1 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -324,6 +324,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/en_server_php.lng b/interface/web/admin/lib/lang/en_server_php.lng index 9d322804bb689273678d0733d9ba6e23c738b6c6..491be1aae2ecd613527e187940420d748137ed86 100644 --- a/interface/web/admin/lib/lang/en_server_php.lng +++ b/interface/web/admin/lib/lang/en_server_php.lng @@ -13,6 +13,7 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; $wb['php_in_use_error'] = 'This PHP-Version is in use.'; $wb['php_name_in_use_error'] = 'The name can not be changed.'; diff --git a/interface/web/admin/lib/lang/en_software_package.lng b/interface/web/admin/lib/lang/en_software_package.lng deleted file mode 100644 index 5850719890ce87b8f5bc29f3356493f8316e9e85..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/en_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> \ No newline at end of file diff --git a/interface/web/admin/lib/lang/en_software_package_install.lng b/interface/web/admin/lib/lang/en_software_package_install.lng deleted file mode 100644 index d6ec373abb7aafe007f477c5f25a957bf521b4a7..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/en_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Install software package'; -$wb['install_key_txt'] = 'Enter install key'; -$wb['btn_save_txt'] = 'Start Installation'; -$wb['btn_cancel_txt'] = 'Cancel'; -?> \ No newline at end of file diff --git a/interface/web/admin/lib/lang/en_software_package_list.lng b/interface/web/admin/lib/lang/en_software_package_list.lng deleted file mode 100644 index 2909d8376e51f4a801bf99fb0e0a3f191558d2a4..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/en_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Apps & Addon packages'; -$wb['installed_txt'] = 'Status'; -$wb['package_title_txt'] = 'Package'; -$wb['package_description_txt'] = 'Description'; -$wb['action_txt'] = 'Action'; -$wb['toolsarea_head_txt'] = 'Packages'; -$wb['repoupdate_txt'] = 'Update package list'; -$wb['package_id_txt'] = 'local App-ID'; -$wb['no_packages_txt'] = 'No packages available'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/en_software_repo.lng b/interface/web/admin/lib/lang/en_software_repo.lng deleted file mode 100644 index 38c163507edd0eb8db509aba945cbb813275dabe..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/en_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'User (optional)'; -$wb['repo_password_txt'] = 'Password (optional)'; -$wb['active_txt'] = 'Active'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> \ No newline at end of file diff --git a/interface/web/admin/lib/lang/en_software_repo_list.lng b/interface/web/admin/lib/lang/en_software_repo_list.lng deleted file mode 100644 index 15b16e2d5b59473324eff98853281749bedf5b3d..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/en_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Repository'; -$wb['active_txt'] = 'Active'; -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'URL'; -?> \ No newline at end of file diff --git a/interface/web/admin/lib/lang/en_software_update_list.lng b/interface/web/admin/lib/lang/en_software_update_list.lng deleted file mode 100644 index fe7639125cd2634fa809d9a6592e9e9fb21e84bb..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/en_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Software updates'; -$wb['server_select_txt'] = 'Select server'; -$wb['installed_txt'] = 'Action'; -$wb['update_title_txt'] = 'Update'; -$wb['version_txt'] = 'Version'; -$wb['action_txt'] = 'Action'; -$wb['no_updates_txt'] = 'No updates available'; -?> diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng index 4493913fb0f04904205a6e5019b4c5a1be59e24f..7db4270c128013516c6135c817198d9c30257c06 100644 --- a/interface/web/admin/lib/lang/en_system_config.lng +++ b/interface/web/admin/lib/lang/en_system_config.lng @@ -24,11 +24,9 @@ $wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.'; $wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.'; $wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; $wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Allow custom login name'; $wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show Autoresponder tab in Mailbox detail'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show Mail Filter tab in Mailbox detail'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show Custom Rules tab in Mailbox detail'; $wb['webmail_url_txt'] = 'Webmail URL'; $wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; $wb['mailmailinglist_url_txt'] = 'Mailing list URL'; @@ -55,6 +53,7 @@ $wb['use_loadindicator_txt'] = 'Use Load Indicator'; $wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; $wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; $wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; diff --git a/interface/web/admin/lib/lang/en_users_list.lng b/interface/web/admin/lib/lang/en_users_list.lng index cc978c78d0479757f9ea1fa7a6bf7ec44291e082..fb1c7bc6ddb8acdcf6dc66b9572f516b935fbf63 100644 --- a/interface/web/admin/lib/lang/en_users_list.lng +++ b/interface/web/admin/lib/lang/en_users_list.lng @@ -5,5 +5,5 @@ $wb['client_id_txt'] = 'User ID'; $wb['active_txt'] = 'Active'; $wb['groups_txt'] = 'Groups'; $wb['add_new_record_txt'] = 'Add new user'; -$wb['warning_txt'] = '<b>WARNING:</b> Do not edit or modify any user settings here. Use the Client- and Reseller settings in the Client module instead. Modifying or changing users or groups here may cause data loss!'; -?> \ No newline at end of file +$wb['warning_txt'] = '<b>WARNING:</b> Do not edit or modify any client user settings here. Use the client- and reseller settings in the client module instead. Modifying or changing client users or groups here may cause data loss!'; +?> diff --git a/interface/web/admin/lib/lang/es_remote_action.lng b/interface/web/admin/lib/lang/es_remote_action.lng index d259d33a15803951c73a5554f534a4bf59fe15b7..0e7997d049eca881c5644e528a001f8348687afe 100644 --- a/interface/web/admin/lib/lang/es_remote_action.lng +++ b/interface/web/admin/lib/lang/es_remote_action.lng @@ -4,7 +4,7 @@ $wb['btn_do_txt'] = 'Ejecutar acción'; $wb['do_ispcupdate_caption'] = 'Realizar actualización de ISPConfig 3 en el servidor remoto'; $wb['do_ispcupdate_desc'] = 'Esta acción realizará una actualización de ISPConfig 3 en el servidor seleccionado.<br><br><strong>¡USE ESTO BAJO SU PROPIA RESPONSABILIDAD!</strong>'; $wb['do_osupdate_caption'] = 'Ejecutar actualización de S.O. al servidor remoto'; -$wb['do_osupdate_desc'] = 'Esta acción realizará un \'aptitude -y upgrade\' en el servidor seleccionado.<br><br><strong>¡USE ESTO BAJO SU PROPIA RESPONSABILIDAD!</strong>'; +$wb['do_osupdate_desc'] = 'Esta acción realizará un \'apt -y upgrade\' en el servidor seleccionado.<br><br><strong>¡USE ESTO BAJO SU PROPIA RESPONSABILIDAD!</strong>'; $wb['ispconfig_update_text'] = 'Inicie sesión como root en el shell de su servidor y ejecute el comando<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />para iniciar la actualización de ISPConfig.<br /><br /><a href= target=>Pulse aquà para ver una descripción detallada de cómo actualizar</a>'; $wb['ispconfig_update_title'] = 'Instrucciones de actualización de ISPConfig'; $wb['select_all_server'] = 'Todos los servidores'; diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index fadf3180c0e6c3f0df2021d8ddb51afd265141b1..67e77efac87b1dd937896a43e163e5e790bd3232 100644 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/es_server_php.lng b/interface/web/admin/lib/lang/es_server_php.lng index 762fa0ed8c90c67fd1bfa4a9765858f3ce4da7a2..df2f0778f486de1bbd1b494a37270dc4e7518c2b 100644 --- a/interface/web/admin/lib/lang/es_server_php.lng +++ b/interface/web/admin/lib/lang/es_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fpm_init_script_txt'] = 'Ruta al archivo de arranque de PHP-FPM'; $wb['php_fpm_pool_dir_txt'] = 'Ruta al directorio de procesos de PHP-FPM'; $wb['server_id_txt'] = 'Servidor'; $wb['server_php_name_error_empty'] = 'El campo Nombre no puede estar vacÃo.'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/es_software_package.lng b/interface/web/admin/lib/lang/es_software_package.lng deleted file mode 100644 index af80e4a47930c8e36e56eb77562ad336903dfed2..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/es_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['Modify software package details'] = 'Modificar los detalles del paquete de aplicación'; -$wb['package_key_txt'] = 'Clave del paquete'; -$wb['package_title_txt'] = 'TÃtulo del paquete'; -$wb['Software Package'] = 'Paquete de aplicación'; -?> diff --git a/interface/web/admin/lib/lang/es_software_package_install.lng b/interface/web/admin/lib/lang/es_software_package_install.lng deleted file mode 100644 index 838af344ecf3247fb4f49d96bd3a405d79edd36e..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/es_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['btn_cancel_txt'] = 'Cancelar'; -$wb['btn_save_txt'] = 'Iniciar instalación'; -$wb['head_txt'] = 'Instalar paquete de aplicación'; -$wb['install_key_txt'] = 'Ingrese la clave de instalación'; -?> diff --git a/interface/web/admin/lib/lang/es_software_package_list.lng b/interface/web/admin/lib/lang/es_software_package_list.lng deleted file mode 100644 index c1837c7a8248a5dd8649e64d431253967cab659e..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/es_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['action_txt'] = 'Acción'; -$wb['delete_txt'] = 'Borrar'; -$wb['edit_txt'] = 'Editar'; -$wb['installed_txt'] = 'Estado'; -$wb['list_head_txt'] = 'Apps & paquetes adicionales'; -$wb['no_packages_txt'] = 'No hay paquetes disponibles'; -$wb['package_description_txt'] = 'Descripción'; -$wb['package_id_txt'] = 'ID local de App'; -$wb['package_title_txt'] = 'Paquete'; -$wb['repoupdate_txt'] = 'Actualizar lista de paquetes'; -$wb['toolsarea_head_txt'] = 'Paquetes'; -?> diff --git a/interface/web/admin/lib/lang/es_software_repo.lng b/interface/web/admin/lib/lang/es_software_repo.lng deleted file mode 100644 index 26382bd50330f5dd9646ac1a61b8ad39d85543dd..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/es_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['active_txt'] = 'Habilitado'; -$wb['repo_name_txt'] = 'Repositorio'; -$wb['repo_password_txt'] = 'Contraseña (opcional)'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'Usuario (opcional)'; -$wb['Software Repository which may contain addons or updates'] = 'Repositorio de aplicaciones que puede contener complementos o actualizaciones'; -?> diff --git a/interface/web/admin/lib/lang/es_software_repo_list.lng b/interface/web/admin/lib/lang/es_software_repo_list.lng deleted file mode 100644 index f6a624bd7d93b26e788f1d45d9d61270691a41aa..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/es_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['active_txt'] = 'Habilitado'; -$wb['list_head_txt'] = 'Repositorio'; -$wb['repo_name_txt'] = 'Repositorio'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/es_software_update_list.lng b/interface/web/admin/lib/lang/es_software_update_list.lng deleted file mode 100644 index 827c60e2999d9449e066a37dc09d1e0998ca7111..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/es_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['action_txt'] = 'Acción'; -$wb['installed_txt'] = 'Acción'; -$wb['list_head_txt'] = 'Actualizaciones de aplicaciones'; -$wb['no_updates_txt'] = 'No hay actualizaciones'; -$wb['server_select_txt'] = 'Seleccionar servidor'; -$wb['update_title_txt'] = 'Actualizar'; -$wb['version_txt'] = 'Versión'; -?> diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng index a001999dd4bcf7e403b7c43a6df079b4adfd91e9..92633c160114e1721e48245bcc078cc6bf7bc6c6 100644 --- a/interface/web/admin/lib/lang/es_system_config.lng +++ b/interface/web/admin/lib/lang/es_system_config.lng @@ -29,11 +29,13 @@ $wb['default_dnsserver_txt'] = 'Servidor DNS por defecto'; $wb['default_mailserver_txt'] = 'Servidor de correo por defecto'; $wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundario por defecto'; $wb['default_webserver_txt'] = 'Servidor web por defecto'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Permitir nombre de inicio de sesión personalizado'; $wb['f5_to_reload_js_txt'] = 'Si modifica esto, deberá pulsar F5 para que el explorador cargue las librerÃas JavaScript o incluso necesitará borrar la caché de su explorador.'; $wb['ftpuser_prefix_error_regex'] = 'Carácter no permitido en el prefijo de usuario de FTP.'; $wb['ftpuser_prefix_txt'] = 'Prefijo del usuario de FTP'; $wb['login_link_error_regex'] = 'Enlace incorrecto para el inicio de sesión personalizado'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Mostrar la pestaña del auto-respondedor en los detalles de la cuenta de correo'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Mostrar la pestaña filtro de correo personalizado en los detalles de la cuenta de correo'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Mostrar la pestaña filtro de correo en los detalles de la cuenta de correo'; diff --git a/interface/web/admin/lib/lang/fi_remote_action.lng b/interface/web/admin/lib/lang/fi_remote_action.lng index 3f8948e19f602408715f9554606f5478359bec9a..dfe56b616d5b3d18abd7eb9965b8c5602cb4354c 100644 --- a/interface/web/admin/lib/lang/fi_remote_action.lng +++ b/interface/web/admin/lib/lang/fi_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Select Server'; $wb['btn_do_txt'] = 'Execute action'; $wb['do_osupdate_caption'] = 'Do OS-Update at remote server'; -$wb['do_osupdate_desc'] = 'This Action does a aptitude -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; +$wb['do_osupdate_desc'] = 'This Action does a apt -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['do_ispcupdate_caption'] = 'Do ISPConfig 3 - Update at remote server'; $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['action_scheduled'] = 'The action is scheduled for execution'; diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index ec974d3249b45ba64ec226973046810ddf75a65d..dac02a14b7ee502d9c91a121d7a238ffc96c6c66 100644 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/fi_server_php.lng b/interface/web/admin/lib/lang/fi_server_php.lng index 179a8fc357142ea401cd663697ef817237957d10..491be1aae2ecd613527e187940420d748137ed86 100644 --- a/interface/web/admin/lib/lang/fi_server_php.lng +++ b/interface/web/admin/lib/lang/fi_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/fi_software_package.lng b/interface/web/admin/lib/lang/fi_software_package.lng deleted file mode 100644 index faffe38217fb9cac04020e73e473c6c46e3caaa1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/fi_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> diff --git a/interface/web/admin/lib/lang/fi_software_package_install.lng b/interface/web/admin/lib/lang/fi_software_package_install.lng deleted file mode 100644 index 5c8b756434ce27d67e479a96383bbee01bce4f1f..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/fi_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Install software package'; -$wb['install_key_txt'] = 'Enter install key'; -$wb['btn_save_txt'] = 'Start Installation'; -$wb['btn_cancel_txt'] = 'Cancel'; -?> diff --git a/interface/web/admin/lib/lang/fi_software_package_list.lng b/interface/web/admin/lib/lang/fi_software_package_list.lng deleted file mode 100644 index 87a9e193b5af46ab72dd14323f5d181e74e9907a..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/fi_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Ohjelmapaketit'; -$wb['installed_txt'] = 'Ohjelmapaketin tila'; -$wb['package_title_txt'] = 'Ohjelmapaketti'; -$wb['package_description_txt'] = 'Ohjelmapaketin kuvaus'; -$wb['action_txt'] = 'Toiminto'; -$wb['toolsarea_head_txt'] = 'Packages'; -$wb['repoupdate_txt'] = 'Update package list'; -$wb['package_id_txt'] = 'local App-ID'; -$wb['no_packages_txt'] = 'No packages available'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/fi_software_repo.lng b/interface/web/admin/lib/lang/fi_software_repo.lng deleted file mode 100644 index f875f428b61f390155ef162d7e27f404328627b2..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/fi_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Ohjelmapakettien varasto'; -$wb['repo_url_txt'] = 'Varaston internetosoite'; -$wb['repo_username_txt'] = 'Käyttäjätunnus (valinnainen)'; -$wb['repo_password_txt'] = 'Salasana (valinnnainen)'; -$wb['active_txt'] = 'Käytössä'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/fi_software_repo_list.lng b/interface/web/admin/lib/lang/fi_software_repo_list.lng deleted file mode 100644 index bde844c99f8d8ea61c5e7b4b1dd98c831ae57a92..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/fi_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Ohjelmapakettien varastot'; -$wb['active_txt'] = 'Käytössä'; -$wb['repo_name_txt'] = 'Ohjelmapakettien varasto'; -$wb['repo_url_txt'] = 'Ohjelmapakettien varaston osoite'; -?> diff --git a/interface/web/admin/lib/lang/fi_software_update_list.lng b/interface/web/admin/lib/lang/fi_software_update_list.lng deleted file mode 100644 index 7871958353e51a7265e5910c7273e825a04ddb76..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/fi_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Ohjelmapäivitykset'; -$wb['installed_txt'] = 'Toiminto'; -$wb['update_title_txt'] = 'Päivitä'; -$wb['version_txt'] = 'Versio'; -$wb['action_txt'] = 'Toiminto'; -$wb['server_select_txt'] = 'Valitse palvelin'; -$wb['no_updates_txt'] = 'No updates available'; -?> diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng index eb7863fd5354b7724cf608aaa263fe242c961037..1a124440574379e02b7ac3a80ed90905f40ed01c 100644 --- a/interface/web/admin/lib/lang/fi_system_config.lng +++ b/interface/web/admin/lib/lang/fi_system_config.lng @@ -23,6 +23,7 @@ $wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; $wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; $wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; $wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Allow custom login name'; $wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; $wb['mailmailinglist_url_txt'] = 'Mailing list URL'; @@ -51,6 +52,7 @@ $wb['use_loadindicator_txt'] = 'Use Load Indicator'; $wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; $wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; $wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; diff --git a/interface/web/admin/lib/lang/fr_remote_action.lng b/interface/web/admin/lib/lang/fr_remote_action.lng index 640c17af9011b93ca5ff543242916f5db27057f2..ca4dc85dddfe078c32937eb68db369e7f3a16446 100644 --- a/interface/web/admin/lib/lang/fr_remote_action.lng +++ b/interface/web/admin/lib/lang/fr_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Sélectionner un serveur'; $wb['btn_do_txt'] = 'Exécuter l’action'; $wb['do_osupdate_caption'] = 'Mettre à jour l\'OS du serveur distant'; -$wb['do_osupdate_desc'] = 'Cette action effectue aptitude -y upgrade sur le serveur sélectionné.<br/><br/><strong>UTILISEZ A VOS RISQUES ET PERILS !</strong>'; +$wb['do_osupdate_desc'] = 'Cette action effectue apt -y upgrade sur le serveur sélectionné.<br/><br/><strong>UTILISEZ A VOS RISQUES ET PERILS !</strong>'; $wb['do_ispcupdate_caption'] = 'Mettre à jour ISPConfig 3 sur le serveur distant'; $wb['do_ispcupdate_desc'] = 'Cette action met à jour ISPConfig3 sur le serveur sélectionné.<br/><br/><strong>UTILISEZ A VOS RISQUES ET PERILS !</strong>'; $wb['action_scheduled'] = 'L’action est marquée pour exécution'; diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index a413c4214dd866f64448b7d1d98aebd5e8bd29a8..0599b8bbed10b9bd886338f09bb65205f2b4887d 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/fr_server_php.lng b/interface/web/admin/lib/lang/fr_server_php.lng index 179a8fc357142ea401cd663697ef817237957d10..491be1aae2ecd613527e187940420d748137ed86 100644 --- a/interface/web/admin/lib/lang/fr_server_php.lng +++ b/interface/web/admin/lib/lang/fr_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/fr_software_package.lng b/interface/web/admin/lib/lang/fr_software_package.lng deleted file mode 100644 index faffe38217fb9cac04020e73e473c6c46e3caaa1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/fr_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> diff --git a/interface/web/admin/lib/lang/fr_software_package_install.lng b/interface/web/admin/lib/lang/fr_software_package_install.lng deleted file mode 100644 index 39f643d3e65cc933abfe042042a4b4c333629590..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/fr_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Installer un paquet logiciel'; -$wb['install_key_txt'] = 'Entrez la clef dinstallation'; -$wb['btn_save_txt'] = 'Démarrer linstallation'; -$wb['btn_cancel_txt'] = 'Annuler'; -?> diff --git a/interface/web/admin/lib/lang/fr_software_package_list.lng b/interface/web/admin/lib/lang/fr_software_package_list.lng deleted file mode 100644 index 405b9e296fb191f3b337bf4f54ee0a8213748d4a..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/fr_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Paquets de logiciels'; -$wb['installed_txt'] = 'Statut'; -$wb['package_title_txt'] = 'Paquet'; -$wb['package_description_txt'] = 'Description'; -$wb['action_txt'] = 'Action'; -$wb['toolsarea_head_txt'] = 'Packages'; -$wb['repoupdate_txt'] = 'Mettre à jour la liste des paquets'; -$wb['package_id_txt'] = 'App-ID locale'; -$wb['no_packages_txt'] = 'No packages available'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/fr_software_repo.lng b/interface/web/admin/lib/lang/fr_software_repo.lng deleted file mode 100644 index f65c955d52d18927304af8fd78f1148091496408..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/fr_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Référence'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'Utilisateur (optionnel)'; -$wb['repo_password_txt'] = 'Mot de passe (optionnel)'; -$wb['active_txt'] = 'Actif'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/fr_software_repo_list.lng b/interface/web/admin/lib/lang/fr_software_repo_list.lng deleted file mode 100644 index 56749896bb0bf5c6b876cc1646a07ee273380656..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/fr_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Référence'; -$wb['active_txt'] = 'Actif'; -$wb['repo_name_txt'] = 'Référence'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/fr_software_update_list.lng b/interface/web/admin/lib/lang/fr_software_update_list.lng deleted file mode 100644 index 8fb67a03104596fa99c9e79560ccab14b00f50cb..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/fr_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Mise à jour des logiciels'; -$wb['installed_txt'] = 'Action'; -$wb['update_title_txt'] = 'Mise à jour'; -$wb['version_txt'] = 'Version'; -$wb['action_txt'] = 'Action'; -$wb['server_select_txt'] = 'Sélectionnez le serveur'; -$wb['no_updates_txt'] = 'No updates available'; -?> diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng index cfecf8e27f2cee39f5fd75d70762c86785b07d1a..a79bf9dafd7ce3b7ed37118e23cffcdd7f9dc2bf 100644 --- a/interface/web/admin/lib/lang/fr_system_config.lng +++ b/interface/web/admin/lib/lang/fr_system_config.lng @@ -16,6 +16,7 @@ $wb['ftpuser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe d $wb['shelluser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe de l’utilisateur Shell.'; $wb['webdavuser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe utilisateur WebDAV.'; $wb['dblist_phpmyadmin_link_txt'] = 'Lien vers PHPMyAdmin dans la liste des bases'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Autoriser les noms d’utilisateurs personnalisés'; $wb['mailboxlist_webmail_link_txt'] = 'Lien vers le Webmail dans la liste des boîtes mail'; $wb['webmail_url_txt'] = 'URL du Webmail'; @@ -48,6 +49,7 @@ $wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; $wb['use_loadindicator_txt'] = 'Use Load Indicator'; $wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; $wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word ’web’.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; diff --git a/interface/web/admin/lib/lang/hr_remote_action.lng b/interface/web/admin/lib/lang/hr_remote_action.lng index 6b10a83f5340b8aa65be2a7a0a365337e9c1add3..d36e61de86750702369587c7cfdb1f7dbaa51006 100644 --- a/interface/web/admin/lib/lang/hr_remote_action.lng +++ b/interface/web/admin/lib/lang/hr_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Izaberi server'; $wb['btn_do_txt'] = 'Pokreni'; $wb['do_osupdate_caption'] = 'Nadogradi operativni sistem na udaljenom serveru'; -$wb['do_osupdate_desc'] = 'Ovime pokrećete \'aptitude -y upgrade\' na izabranom serveru.<br><br><strong>KORISTITE NA VLASTITU ODGOVORNOST!</strong>'; +$wb['do_osupdate_desc'] = 'Ovime pokrećete \'apt -y upgrade\' na izabranom serveru.<br><br><strong>KORISTITE NA VLASTITU ODGOVORNOST!</strong>'; $wb['do_ispcupdate_caption'] = 'Nadogradi ISPConfig 3 na udaljenom serveru'; $wb['do_ispcupdate_desc'] = 'Ovime pokrećete nadogradnju ISPConfig3-a na izabranom serveru.<br><br><strong>KORISTITE NA VLASTITU ODGOVORNOST!</strong>'; $wb['action_scheduled'] = 'Nadogradnja je dodana u planer poslova'; diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index 4eb3574d45e3ea063957d014bc3401ccfb341ff0..e0894ceb82916b2a2b95c0889bfca6baaed23ade 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/hr_server_php.lng b/interface/web/admin/lib/lang/hr_server_php.lng index 5bfc1dd6d20d59cb3f1f28dda7755c122a84c1ad..15ec1b30f533c17414ed1908236ba4ee12561a16 100644 --- a/interface/web/admin/lib/lang/hr_server_php.lng +++ b/interface/web/admin/lib/lang/hr_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Putanja do php.ini direktorija'; $wb['php_fpm_init_script_txt'] = 'Putanja do PHP-FPM init skripte'; $wb['php_fpm_ini_dir_txt'] = 'Putanja do php.ini direktorija'; $wb['php_fpm_pool_dir_txt'] = 'Putanja do PHP-FPM pool direktorija'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/hr_software_package.lng b/interface/web/admin/lib/lang/hr_software_package.lng deleted file mode 100644 index faffe38217fb9cac04020e73e473c6c46e3caaa1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/hr_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> diff --git a/interface/web/admin/lib/lang/hr_software_package_install.lng b/interface/web/admin/lib/lang/hr_software_package_install.lng deleted file mode 100644 index 22d7e0ce7a68bb864877ecaa7274034f9dc970bb..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/hr_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Instaliraj softverski paket'; -$wb['install_key_txt'] = 'Unesi instalacijski kljuÄ'; -$wb['btn_save_txt'] = 'Pokreni instalaciju'; -$wb['btn_cancel_txt'] = 'Odustani'; -?> diff --git a/interface/web/admin/lib/lang/hr_software_package_list.lng b/interface/web/admin/lib/lang/hr_software_package_list.lng deleted file mode 100644 index 3722c5cff47ab2f4fc138fe036a087aa8226de13..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/hr_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Aplikacije i dodatni paketi'; -$wb['installed_txt'] = 'Status'; -$wb['package_title_txt'] = 'Paketi'; -$wb['package_description_txt'] = 'Opis'; -$wb['action_txt'] = 'Akcija'; -$wb['toolsarea_head_txt'] = 'Paketi'; -$wb['repoupdate_txt'] = 'Osvježi listu paketa'; -$wb['package_id_txt'] = 'lokalni App-ID'; -$wb['no_packages_txt'] = 'No packages available'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/hr_software_repo.lng b/interface/web/admin/lib/lang/hr_software_repo.lng deleted file mode 100644 index bbfb2e2db29084c137cfd29804fc6be4ea2960ca..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/hr_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Repozitoriji'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'KorisniÄko ime (opcionalno)'; -$wb['repo_password_txt'] = 'Å ifra (opcionalno)'; -$wb['active_txt'] = 'Aktivno'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/hr_software_repo_list.lng b/interface/web/admin/lib/lang/hr_software_repo_list.lng deleted file mode 100644 index b79045bd76e8c2bdd363617f56efde702ebf5c92..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/hr_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Repozitorij'; -$wb['active_txt'] = 'Aktivno'; -$wb['repo_name_txt'] = 'Repozitorij'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/hr_software_update_list.lng b/interface/web/admin/lib/lang/hr_software_update_list.lng deleted file mode 100644 index 2250a186a33ca4e7cfa2f2882b9100047aed4a9b..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/hr_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Softverske nadogradnje'; -$wb['server_select_txt'] = 'Izaberi server'; -$wb['installed_txt'] = 'Akcija'; -$wb['update_title_txt'] = 'Nadogradi'; -$wb['version_txt'] = 'Verzija'; -$wb['action_txt'] = 'Akcija'; -$wb['no_updates_txt'] = 'Nema nadogradnji'; -?> diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng index 3f6486ae53d5900412642455491ee4bb49391c35..7a3426eff580f77e0e1cf684913b60f5b084e61f 100644 --- a/interface/web/admin/lib/lang/hr_system_config.lng +++ b/interface/web/admin/lib/lang/hr_system_config.lng @@ -23,6 +23,7 @@ $wb['webftp_url_txt'] = 'WebFTP URL'; $wb['dashboard_atom_url_admin_txt'] = 'RSS URL za poÄetnu stranicu (admin)'; $wb['dashboard_atom_url_reseller_txt'] = 'RSS URL za poÄetnu stranicu (reseller)'; $wb['dashboard_atom_url_client_txt'] = 'RSS URL za poÄetnu stranicu (client)'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Dozvoli izbor korisniÄkog imena'; $wb['mailmailinglist_link_txt'] = 'Link na mailing listu u Mailing listi'; $wb['mailmailinglist_url_txt'] = 'URL mailing liste'; @@ -51,6 +52,7 @@ $wb['use_loadindicator_txt'] = 'Use Load Indicator'; $wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; $wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; $wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; diff --git a/interface/web/admin/lib/lang/hu_remote_action.lng b/interface/web/admin/lib/lang/hu_remote_action.lng index 6c31b4fd0dd31a54209267f38515009eb0e3fd86..03d94116b9f6047c100c304a977309083460bad3 100644 --- a/interface/web/admin/lib/lang/hu_remote_action.lng +++ b/interface/web/admin/lib/lang/hu_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Válasszon szervert'; $wb['btn_do_txt'] = 'Execute action'; $wb['do_osupdate_caption'] = 'Do OS-Update at remote server'; -$wb['do_osupdate_desc'] = 'This Action does a aptitude -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; +$wb['do_osupdate_desc'] = 'This Action does a apt -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['do_ispcupdate_caption'] = 'Do ISPConfig 3 - Update at remote server'; $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['action_scheduled'] = 'The action is scheduled for execution'; diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index 73f0181f3d27408d5e824796d623ae4ff68e4b4e..97774f9ecd77c17812d7c3e4612a935b967ca053 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/hu_server_php.lng b/interface/web/admin/lib/lang/hu_server_php.lng index 179a8fc357142ea401cd663697ef817237957d10..491be1aae2ecd613527e187940420d748137ed86 100644 --- a/interface/web/admin/lib/lang/hu_server_php.lng +++ b/interface/web/admin/lib/lang/hu_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/hu_software_package.lng b/interface/web/admin/lib/lang/hu_software_package.lng deleted file mode 100644 index faffe38217fb9cac04020e73e473c6c46e3caaa1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/hu_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> diff --git a/interface/web/admin/lib/lang/hu_software_package_install.lng b/interface/web/admin/lib/lang/hu_software_package_install.lng deleted file mode 100644 index 6dc8be3f899c18a4a3796440fccbd743a203d51e..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/hu_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Szoftvercsomag telepÃtése'; -$wb['install_key_txt'] = 'Enter install key'; -$wb['btn_save_txt'] = 'Start Installation'; -$wb['btn_cancel_txt'] = 'Mégsem'; -?> diff --git a/interface/web/admin/lib/lang/hu_software_package_list.lng b/interface/web/admin/lib/lang/hu_software_package_list.lng deleted file mode 100644 index 430583ce8a807b7741947c3a561baa6ef165b74d..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/hu_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Szoftver csomag'; -$wb['installed_txt'] = 'Ãllapot'; -$wb['package_title_txt'] = 'Csomag'; -$wb['package_description_txt'] = 'LeÃrás'; -$wb['action_txt'] = 'Művelet'; -$wb['toolsarea_head_txt'] = 'Csomagok'; -$wb['repoupdate_txt'] = 'Csomaglista frissÃtése'; -$wb['package_id_txt'] = 'local App-ID'; -$wb['no_packages_txt'] = 'No packages available'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/hu_software_repo.lng b/interface/web/admin/lib/lang/hu_software_repo.lng deleted file mode 100644 index 3c578e3694e64e0bb61e2042a7af189fbb633b8b..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/hu_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'CÃm'; -$wb['repo_username_txt'] = 'Felhasználó (opcionális)'; -$wb['repo_password_txt'] = 'Jelszó (opcionális)'; -$wb['active_txt'] = 'AktÃv'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/hu_software_repo_list.lng b/interface/web/admin/lib/lang/hu_software_repo_list.lng deleted file mode 100644 index f5e7aabcb2dd935dc28ee9649aa2e33e85356a04..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/hu_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Repository'; -$wb['active_txt'] = 'AktÃv'; -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'CÃm'; -?> diff --git a/interface/web/admin/lib/lang/hu_software_update_list.lng b/interface/web/admin/lib/lang/hu_software_update_list.lng deleted file mode 100644 index c2edc83217d879d6cfc829de25c24afb3a1964ef..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/hu_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Szoftver frissÃtések'; -$wb['installed_txt'] = 'Művelet'; -$wb['update_title_txt'] = 'FrissÃtés'; -$wb['version_txt'] = 'Verzió'; -$wb['action_txt'] = 'Művelet'; -$wb['server_select_txt'] = 'Válasszon szervert'; -$wb['no_updates_txt'] = 'No updates available'; -?> diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng index 6b1a29ee46db9396a3abfaad4aee1347efb45350..5fb8f7cd6e54e364cbd43b31e3f369e9bbfe8f75 100644 --- a/interface/web/admin/lib/lang/hu_system_config.lng +++ b/interface/web/admin/lib/lang/hu_system_config.lng @@ -27,6 +27,7 @@ $wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; $wb['mailmailinglist_url_txt'] = 'Mailing list URL'; $wb['admin_mail_txt'] = 'Administrators e-mail'; $wb['admin_name_txt'] = 'Administrators name'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Allow custom login name'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; $wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; @@ -51,6 +52,7 @@ $wb['use_loadindicator_txt'] = 'Use Load Indicator'; $wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; $wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; $wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; diff --git a/interface/web/admin/lib/lang/id_remote_action.lng b/interface/web/admin/lib/lang/id_remote_action.lng index 9e3eccb30885730125e874407887b4322cc08b06..2ddc957f630d7aff9bf3e177ff452b612226a430 100644 --- a/interface/web/admin/lib/lang/id_remote_action.lng +++ b/interface/web/admin/lib/lang/id_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Pilih Server'; $wb['btn_do_txt'] = 'Jalankan Tindakan'; $wb['do_osupdate_caption'] = 'Lakukan pemutakhiran OS di server remote'; -$wb['do_osupdate_desc'] = 'Tindakan ini menjalankan aptitude -y upgrade di server yang dipilih.<br><br><strong>PENGGUNAANNYA MENJADI TANGGUNG JAWAB ANDA SENDIRI!</strong>'; +$wb['do_osupdate_desc'] = 'Tindakan ini menjalankan apt -y upgrade di server yang dipilih.<br><br><strong>PENGGUNAANNYA MENJADI TANGGUNG JAWAB ANDA SENDIRI!</strong>'; $wb['do_ispcupdate_caption'] = 'Lakukan pemutakhiran ISPConfig 3 - di server remote'; $wb['do_ispcupdate_desc'] = 'Tindakan ini melakukan pemutakhiran ISPConfig3 di server yang Anda pilih.<br><br><strong>PENGGUNAANNYA MENJADI TANGGUNG JAWAB ANDA SENDIRI!</strong>'; $wb['action_scheduled'] = 'Tindakan dijadwalkan untuk dijalankan'; diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index 3555ba32889e25ef93546a4461a3a797aa004687..814e963f649938d4cf6a88cb871844a7d0186b98 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/id_server_php.lng b/interface/web/admin/lib/lang/id_server_php.lng index 179a8fc357142ea401cd663697ef817237957d10..491be1aae2ecd613527e187940420d748137ed86 100644 --- a/interface/web/admin/lib/lang/id_server_php.lng +++ b/interface/web/admin/lib/lang/id_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/id_software_package.lng b/interface/web/admin/lib/lang/id_software_package.lng deleted file mode 100644 index faffe38217fb9cac04020e73e473c6c46e3caaa1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/id_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> diff --git a/interface/web/admin/lib/lang/id_software_package_install.lng b/interface/web/admin/lib/lang/id_software_package_install.lng deleted file mode 100644 index 9e966893caefed15e144571afc07f91705df52ea..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/id_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Pasang paket perangkat lunak'; -$wb['install_key_txt'] = 'Masukkan kunci pemasangan'; -$wb['btn_save_txt'] = 'Mulai Pemasangan'; -$wb['btn_cancel_txt'] = 'Batal'; -?> diff --git a/interface/web/admin/lib/lang/id_software_package_list.lng b/interface/web/admin/lib/lang/id_software_package_list.lng deleted file mode 100644 index 02642be6e2c75183a8a08800207bf82f36424fb5..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/id_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Paket-paket Perangkat Lunak'; -$wb['installed_txt'] = 'Status'; -$wb['package_title_txt'] = 'Paket'; -$wb['package_description_txt'] = 'Keterangan'; -$wb['action_txt'] = 'Aktif'; -$wb['toolsarea_head_txt'] = 'Paket'; -$wb['repoupdate_txt'] = 'Mutakhirkan daftar paket'; -$wb['package_id_txt'] = 'App-ID lokal'; -$wb['no_packages_txt'] = 'No packages available'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/id_software_repo.lng b/interface/web/admin/lib/lang/id_software_repo.lng deleted file mode 100644 index 1c3b0305b4f25e5b09952507b4eb9c200dbc71bd..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/id_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Repositori'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'Pengguna (opsional)'; -$wb['repo_password_txt'] = 'Sandi (opsional)'; -$wb['active_txt'] = 'Aktif'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/id_software_repo_list.lng b/interface/web/admin/lib/lang/id_software_repo_list.lng deleted file mode 100644 index 63444907f31569d6926313329d15939bf2b9979c..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/id_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Repositori'; -$wb['active_txt'] = 'Aktif'; -$wb['repo_name_txt'] = 'Repositori'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/id_software_update_list.lng b/interface/web/admin/lib/lang/id_software_update_list.lng deleted file mode 100644 index f789a0e72c472d55b27e254771c57d98bfcae3fd..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/id_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Pemutakhiran Perangkat Lunak'; -$wb['server_select_txt'] = 'Pilih server'; -$wb['installed_txt'] = 'Tindakan'; -$wb['update_title_txt'] = 'Mutakhirkan'; -$wb['version_txt'] = 'Versi'; -$wb['action_txt'] = 'Tindakan'; -$wb['no_updates_txt'] = 'No updates available'; -?> diff --git a/interface/web/admin/lib/lang/id_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng index f034f9bd769befcdab9a80144f86838f7ed27363..b1df781b7646c5b729a4eb6d19d1b64076e3552b 100644 --- a/interface/web/admin/lib/lang/id_system_config.lng +++ b/interface/web/admin/lib/lang/id_system_config.lng @@ -23,6 +23,7 @@ $wb['use_domain_module_txt'] = 'Gunakan modul domain untuk menambahkan domain ba $wb['use_domain_module_hint'] = 'Jika Anda menggunakan modul ini, pelanggan Anda hanya dapat memilih salah satu domain yang dibuat oleh admin untuk mereka. Mereka tidak bisa menyunting dengan bebas kolom domain. Anda harus masuk kembali setelah mengubah nilai ini, agar perubahannya terlihat.'; $wb['new_domain_txt'] = 'HTML untuk membuat domain baru'; $wb['webftp_url_txt'] = 'URL WebFTP'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Allow custom login name'; $wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; $wb['mailmailinglist_url_txt'] = 'Mailing list URL'; @@ -51,6 +52,7 @@ $wb['use_loadindicator_txt'] = 'Use Load Indicator'; $wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; $wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; $wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; diff --git a/interface/web/admin/lib/lang/it_remote_action.lng b/interface/web/admin/lib/lang/it_remote_action.lng index 08d02db6a33163db54081c2a556c4721457d93f7..bb14a01f7575b8b34eeb7b77272dc97965441693 100644 --- a/interface/web/admin/lib/lang/it_remote_action.lng +++ b/interface/web/admin/lib/lang/it_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Seleziona Server'; $wb['btn_do_txt'] = 'Esegui Azione'; $wb['do_osupdate_caption'] = 'Do OS-Update at remote server'; -$wb['do_osupdate_desc'] = 'This Action does a aptitude -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; +$wb['do_osupdate_desc'] = 'This Action does a apt -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['do_ispcupdate_caption'] = 'Do ISPConfig 3 - Update at remote server'; $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['action_scheduled'] = 'The action is scheduled for execution'; diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index 39b7161ddf1f04d054637fc4e19928769f263eda..f9e30f39374728b73ef67c587d8c84c625117e68 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/it_server_php.lng b/interface/web/admin/lib/lang/it_server_php.lng index 805528f376d582be160fd802b36c26530f8b3e22..d85b5cd7da2a6adb369442e1b08734a4e3880d3f 100644 --- a/interface/web/admin/lib/lang/it_server_php.lng +++ b/interface/web/admin/lib/lang/it_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Percorso per php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Percorso per PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Percorso per php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Percorso per PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/it_software_package.lng b/interface/web/admin/lib/lang/it_software_package.lng deleted file mode 100644 index d2e123cf85abc3c9fce3de2d5b6f3d5fa3c85459..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/it_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Titolo pacchetto'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Pacchetto Software'; -$wb['Modify software package details'] = 'Modifica dettagli pacchetto software'; -?> diff --git a/interface/web/admin/lib/lang/it_software_package_install.lng b/interface/web/admin/lib/lang/it_software_package_install.lng deleted file mode 100644 index 1e210d58940cd0a352afaf9ff1d0f81697b8540e..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/it_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Installa pacchetto software'; -$wb['install_key_txt'] = 'Inserisci chiave pacchetto'; -$wb['btn_save_txt'] = 'Avvia installazione'; -$wb['btn_cancel_txt'] = 'Annulla'; -?> diff --git a/interface/web/admin/lib/lang/it_software_package_list.lng b/interface/web/admin/lib/lang/it_software_package_list.lng deleted file mode 100644 index 5ab82417de404318600984e7ac4d732fcb130840..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/it_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Pacchetti Software'; -$wb['installed_txt'] = 'Stato'; -$wb['package_title_txt'] = 'Pacchetto'; -$wb['package_description_txt'] = 'Descrizione'; -$wb['action_txt'] = 'Action'; -$wb['toolsarea_head_txt'] = 'Pacchetti'; -$wb['repoupdate_txt'] = 'Aggiorna elenco pacchetti'; -$wb['package_id_txt'] = 'local App-ID'; -$wb['no_packages_txt'] = 'Nessun pacchetto disponibile'; -$wb['edit_txt'] = 'Modifica'; -$wb['delete_txt'] = 'Elimina'; -?> diff --git a/interface/web/admin/lib/lang/it_software_repo.lng b/interface/web/admin/lib/lang/it_software_repo.lng deleted file mode 100644 index 76b01826971d75f28c53c52dbbed40f3587a7fdd..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/it_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'Utente (facoltativo)'; -$wb['repo_password_txt'] = 'Password (facoltativa)'; -$wb['active_txt'] = 'Attivo'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository che può contenere aggiunte o aggiornamenti'; -?> diff --git a/interface/web/admin/lib/lang/it_software_repo_list.lng b/interface/web/admin/lib/lang/it_software_repo_list.lng deleted file mode 100644 index 4db52118ec6bd564032ac437355c68aa5e17cf78..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/it_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Repository'; -$wb['active_txt'] = 'Attivo'; -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'Indirizzo'; -?> diff --git a/interface/web/admin/lib/lang/it_software_update_list.lng b/interface/web/admin/lib/lang/it_software_update_list.lng deleted file mode 100644 index cc264b84eccbc926ccc68ca4b553548ad9eaf764..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/it_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Aggiornamento programmi'; -$wb['installed_txt'] = 'Azione'; -$wb['update_title_txt'] = 'Aggiornamento'; -$wb['version_txt'] = 'Versione'; -$wb['action_txt'] = 'Azione'; -$wb['server_select_txt'] = 'Selezionare server'; -$wb['no_updates_txt'] = 'Nessun aggiornamento disponibile'; -?> diff --git a/interface/web/admin/lib/lang/it_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng index 42f878a54dfb2124c0eddea733b90718255b62e7..ddfc072ff2653d987596d44d76ba9949ec0621a6 100644 --- a/interface/web/admin/lib/lang/it_system_config.lng +++ b/interface/web/admin/lib/lang/it_system_config.lng @@ -23,6 +23,7 @@ $wb['webftp_url_txt'] = 'WebFTP URL'; $wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; $wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; $wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Allow custom login name'; $wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; $wb['mailmailinglist_url_txt'] = 'Mailing list URL'; @@ -48,6 +49,7 @@ $wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; $wb['use_loadindicator_txt'] = 'Use Load Indicator'; $wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; $wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; diff --git a/interface/web/admin/lib/lang/ja_remote_action.lng b/interface/web/admin/lib/lang/ja_remote_action.lng index 3f8948e19f602408715f9554606f5478359bec9a..dfe56b616d5b3d18abd7eb9965b8c5602cb4354c 100644 --- a/interface/web/admin/lib/lang/ja_remote_action.lng +++ b/interface/web/admin/lib/lang/ja_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Select Server'; $wb['btn_do_txt'] = 'Execute action'; $wb['do_osupdate_caption'] = 'Do OS-Update at remote server'; -$wb['do_osupdate_desc'] = 'This Action does a aptitude -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; +$wb['do_osupdate_desc'] = 'This Action does a apt -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['do_ispcupdate_caption'] = 'Do ISPConfig 3 - Update at remote server'; $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['action_scheduled'] = 'The action is scheduled for execution'; diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index a50922639c704258f945e4060ddf4185d7c3e70a..52ac44a351d9a35a9d25376c288d5225892ae266 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/ja_server_php.lng b/interface/web/admin/lib/lang/ja_server_php.lng index 179a8fc357142ea401cd663697ef817237957d10..491be1aae2ecd613527e187940420d748137ed86 100644 --- a/interface/web/admin/lib/lang/ja_server_php.lng +++ b/interface/web/admin/lib/lang/ja_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/ja_software_package.lng b/interface/web/admin/lib/lang/ja_software_package.lng deleted file mode 100644 index faffe38217fb9cac04020e73e473c6c46e3caaa1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ja_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> diff --git a/interface/web/admin/lib/lang/ja_software_package_install.lng b/interface/web/admin/lib/lang/ja_software_package_install.lng deleted file mode 100644 index 5c8b756434ce27d67e479a96383bbee01bce4f1f..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ja_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Install software package'; -$wb['install_key_txt'] = 'Enter install key'; -$wb['btn_save_txt'] = 'Start Installation'; -$wb['btn_cancel_txt'] = 'Cancel'; -?> diff --git a/interface/web/admin/lib/lang/ja_software_package_list.lng b/interface/web/admin/lib/lang/ja_software_package_list.lng deleted file mode 100644 index e5352e91e7cf91fe7472f0797853dc7d9b77c1d9..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ja_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'ソフトウェアパッケージ'; -$wb['installed_txt'] = '状態'; -$wb['package_title_txt'] = 'パッケージ'; -$wb['package_description_txt'] = '説明'; -$wb['action_txt'] = 'æ“作'; -$wb['toolsarea_head_txt'] = 'Packages'; -$wb['repoupdate_txt'] = 'Update package list'; -$wb['package_id_txt'] = 'local App-ID'; -$wb['no_packages_txt'] = 'No packages available'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/ja_software_repo.lng b/interface/web/admin/lib/lang/ja_software_repo.lng deleted file mode 100644 index c95399a54ebba86be6c0d10e24e1bdecb0f737cb..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ja_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'リãƒã‚¸ãƒˆãƒªãƒ¼'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'ユーザー(必è¦ãŒã‚ã‚Œã°ï¼‰'; -$wb['repo_password_txt'] = 'パスワード(必è¦ãŒã‚ã‚Œã°ï¼‰'; -$wb['active_txt'] = '有効'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/ja_software_repo_list.lng b/interface/web/admin/lib/lang/ja_software_repo_list.lng deleted file mode 100644 index a7d06d8fdec5616b64fbd9e572d0d37b11b0a337..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ja_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'リãƒã‚¸ãƒˆãƒªãƒ¼'; -$wb['active_txt'] = '有効'; -$wb['repo_name_txt'] = 'リãƒã‚¸ãƒˆãƒªãƒ¼'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/ja_software_update_list.lng b/interface/web/admin/lib/lang/ja_software_update_list.lng deleted file mode 100644 index f0ecf5711bfbe603072a559a54073ea008303770..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ja_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'ソフトウェアã®æ›´æ–°'; -$wb['server_select_txt'] = 'サーãƒãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„'; -$wb['installed_txt'] = 'æ“作'; -$wb['update_title_txt'] = 'æ›´æ–°'; -$wb['version_txt'] = 'ãƒãƒ¼ã‚¸ãƒ§ãƒ³'; -$wb['action_txt'] = 'æ“作'; -$wb['no_updates_txt'] = 'No updates available'; -?> diff --git a/interface/web/admin/lib/lang/ja_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng index f50ffb511456d8897e4decb0543ab681d98b644b..8ff20d13cade7b51fdf9d77603fe15f7e4a9c635 100644 --- a/interface/web/admin/lib/lang/ja_system_config.lng +++ b/interface/web/admin/lib/lang/ja_system_config.lng @@ -23,6 +23,7 @@ $wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; $wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; $wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; $wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Allow custom login name'; $wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; $wb['mailmailinglist_url_txt'] = 'Mailing list URL'; @@ -51,6 +52,7 @@ $wb['use_loadindicator_txt'] = 'Use Load Indicator'; $wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; $wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; $wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; diff --git a/interface/web/admin/lib/lang/ja_users_list.lng b/interface/web/admin/lib/lang/ja_users_list.lng index 21b07be3c5a80417f2ed47869aab8c9aaf9beacd..8896b8ccbd3ccd53f68e4f6d4539d8fc9077358d 100644 --- a/interface/web/admin/lib/lang/ja_users_list.lng +++ b/interface/web/admin/lib/lang/ja_users_list.lng @@ -4,6 +4,6 @@ $wb['username_txt'] = 'ユーザーå'; $wb['client_id_txt'] = 'Client ID'; $wb['active_txt'] = 'Active'; $wb['add_new_record_txt'] = 'ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’è¿½åŠ ã™ã‚‹'; -$wb['warning_txt'] = '<b>WARNING:</b> Do not edit or modify any user settings here. Use the Client- and Reseller settings in the Client module instead. Modifying or changing users or groups here may cause data loss!'; +$wb['warning_txt'] = '<b>WARNING:</b> Do not edit or modify any client user settings here. Use the client- and reseller settings in the client module instead. Modifying or changing client users or groups here may cause data loss!'; $wb['groups_txt'] = 'Groups'; ?> diff --git a/interface/web/admin/lib/lang/nl_remote_action.lng b/interface/web/admin/lib/lang/nl_remote_action.lng index 6f1521152f65b993d7a1344369c19c72c5470701..146bbc6bfb7b89afeae5f0bd836b447697cb327d 100644 --- a/interface/web/admin/lib/lang/nl_remote_action.lng +++ b/interface/web/admin/lib/lang/nl_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Seleceert server'; $wb['btn_do_txt'] = 'Actie uitvoeren'; $wb['do_osupdate_caption'] = 'Voer een OS-update uit op de remote server'; -$wb['do_osupdate_desc'] = 'Deze actie voert een aptitude -y upgrade uit op de door u geselecteerde server.<br><br><strong>GEBRUIK OP EIGEN RISICO!</strong>'; +$wb['do_osupdate_desc'] = 'Deze actie voert een apt -y upgrade uit op de door u geselecteerde server.<br><br><strong>GEBRUIK OP EIGEN RISICO!</strong>'; $wb['do_ispcupdate_caption'] = 'Voer een ISPConfig 3 - update uit op de remote server'; $wb['do_ispcupdate_desc'] = 'Deze actie voert een ISPConfig3 update uit op de soor u geselecteerde server.<br><br><strong>GEBRUIK OP EIGEN RISICO!</strong>'; $wb['action_scheduled'] = 'Deze actie is ingepland om uitgevoerd te worden'; diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 9ef50bb6c123ade3a360f4fc8db0575b409b8e7c..e9e412b609e1fd6acb6c4374268a3346e1898cd4 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/nl_server_php.lng b/interface/web/admin/lib/lang/nl_server_php.lng index 179a8fc357142ea401cd663697ef817237957d10..491be1aae2ecd613527e187940420d748137ed86 100644 --- a/interface/web/admin/lib/lang/nl_server_php.lng +++ b/interface/web/admin/lib/lang/nl_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/nl_software_package.lng b/interface/web/admin/lib/lang/nl_software_package.lng deleted file mode 100644 index faffe38217fb9cac04020e73e473c6c46e3caaa1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/nl_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> diff --git a/interface/web/admin/lib/lang/nl_software_package_install.lng b/interface/web/admin/lib/lang/nl_software_package_install.lng deleted file mode 100644 index 87150b8cf190777da50b76bb1c1010aa108009c0..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/nl_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Install softwarepakket'; -$wb['install_key_txt'] = 'Voer installatie sleutel in'; -$wb['btn_save_txt'] = 'Start installatie'; -$wb['btn_cancel_txt'] = 'Annuleren'; -?> diff --git a/interface/web/admin/lib/lang/nl_software_package_list.lng b/interface/web/admin/lib/lang/nl_software_package_list.lng deleted file mode 100644 index 44aaa563ad06f472796aa96a31d9a241c9cee4fc..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/nl_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Apps & Addon pakketten'; -$wb['installed_txt'] = 'Status'; -$wb['package_title_txt'] = 'Pakket'; -$wb['package_description_txt'] = 'Omschrijving'; -$wb['action_txt'] = 'Actie'; -$wb['toolsarea_head_txt'] = 'Pakketten'; -$wb['repoupdate_txt'] = 'Update pakketlijst'; -$wb['package_id_txt'] = 'lokaal App-ID'; -$wb['no_packages_txt'] = 'No packages available'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/nl_software_repo.lng b/interface/web/admin/lib/lang/nl_software_repo.lng deleted file mode 100644 index 665c4197a24af7dd5caa4cc89e2e599f4a9a953e..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/nl_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'User (optionieel)'; -$wb['repo_password_txt'] = 'Password (optionieel)'; -$wb['active_txt'] = 'Actief'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/nl_software_repo_list.lng b/interface/web/admin/lib/lang/nl_software_repo_list.lng deleted file mode 100644 index fc05fc269b9d6bdf36e7d0fb2d2f4f25822e33aa..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/nl_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Repository'; -$wb['active_txt'] = 'Actief'; -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/nl_software_update_list.lng b/interface/web/admin/lib/lang/nl_software_update_list.lng deleted file mode 100644 index 0d05c855943aad9b9933f72c91130efe5d17622f..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/nl_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Software updates'; -$wb['server_select_txt'] = 'Selecteer server'; -$wb['installed_txt'] = 'Actie'; -$wb['update_title_txt'] = 'Update'; -$wb['version_txt'] = 'Versie'; -$wb['action_txt'] = 'Actie'; -$wb['no_updates_txt'] = 'No updates available'; -?> diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng index 4078be986ee76ddc553afeb1384cdc6871469895..0caa9228e08fda0e5dbb84ce29a66704ba2a9e1d 100644 --- a/interface/web/admin/lib/lang/nl_system_config.lng +++ b/interface/web/admin/lib/lang/nl_system_config.lng @@ -17,6 +17,7 @@ $wb['shelluser_prefix_error_regex'] = 'Char niet toegestaan in shell gebruiker v $wb['webdavuser_prefix_error_regex'] = 'Char niet toegestaan in webdav gebruiker voorvoegsel.'; $wb['dblist_phpmyadmin_link_txt'] = 'Link naar phpmyadmin in DB lijst'; $wb['mailboxlist_webmail_link_txt'] = 'Link naar webmail in Mailbox lijst'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; @@ -26,6 +27,7 @@ $wb['use_domain_module_txt'] = 'Gebruik de domein-module om nieuwe domeinen toe $wb['use_domain_module_hint'] = 'Als u deze module gebruikt, kunnen uw klanten alleen de domeinen selecteren die de administrator heeft aangemaakt. klanten kunnen het domein-veld zelf niet wijzigen. Na opnieuw ingelogd te zijn zullen de wijzigingen zichtbaar zijn.'; $wb['new_domain_txt'] = 'HTML om een nieuw domein te maken'; $wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Allow custom login name'; $wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; $wb['mailmailinglist_url_txt'] = 'Mailing list URL'; diff --git a/interface/web/admin/lib/lang/pl_remote_action.lng b/interface/web/admin/lib/lang/pl_remote_action.lng index 67a819febba341362353e1d375255b698b4b3a06..884b2047d54293e9aae795e8c5737567c7022d54 100644 --- a/interface/web/admin/lib/lang/pl_remote_action.lng +++ b/interface/web/admin/lib/lang/pl_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Wybierz serwer'; $wb['btn_do_txt'] = 'Uruchom akcjÄ™'; $wb['do_osupdate_caption'] = 'Wykonaj zdalnÄ… aktualizacjÄ™ systemu na serwerze'; -$wb['do_osupdate_desc'] = 'Ta akcja wykona polecenie <b>aptitude -y upgrade</b> na wybranym serwerze.<br><br><strong>UÅ»YWASZ JEJ NA WÅASNÄ„ ODPOWIEDZIALNOŚĆ!</strong>'; +$wb['do_osupdate_desc'] = 'Ta akcja wykona polecenie <b>apt -y upgrade</b> na wybranym serwerze.<br><br><strong>UÅ»YWASZ JEJ NA WÅASNÄ„ ODPOWIEDZIALNOŚĆ!</strong>'; $wb['do_ispcupdate_caption'] = 'Wykonaj zdalnÄ… aktualizacjÄ™ ISPConfig 3 na serwerze'; $wb['do_ispcupdate_desc'] = 'Ta akcja przeprowadzi aktualizacjÄ™ ISPConfig3 na wybranym serwerze.<br><br><strong>UÅ»YWASZ JEJ NA WÅASNÄ„ ODPOWIEDZIALNOŚĆ!</strong>'; $wb['action_scheduled'] = 'Akcja zaplanowana do wykonania'; diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index af839bb2e3bce7e4e77aa651716fae9064b52872..f9d43d3bfd8e09a3f0e86c1dda8d219f6bbceb51 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/pl_server_php.lng b/interface/web/admin/lib/lang/pl_server_php.lng index 5a7c7b6f9bdd90a5cec71911c98247687365ff46..de4ce60ac1af074b470fa993c661b8890cd3d4db 100644 --- a/interface/web/admin/lib/lang/pl_server_php.lng +++ b/interface/web/admin/lib/lang/pl_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Åšcieżka do katalogu php.ini'; $wb['php_fpm_init_script_txt'] = 'Åšcieżka do skryptu inicjujÄ…cego PHP-FPM'; $wb['php_fpm_ini_dir_txt'] = 'Åšcieżka do katalogu php.ini'; $wb['php_fpm_pool_dir_txt'] = 'Åšcieżka do katalogu pool PHP-FPM'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/pl_software_package.lng b/interface/web/admin/lib/lang/pl_software_package.lng deleted file mode 100644 index faffe38217fb9cac04020e73e473c6c46e3caaa1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/pl_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> diff --git a/interface/web/admin/lib/lang/pl_software_package_install.lng b/interface/web/admin/lib/lang/pl_software_package_install.lng deleted file mode 100644 index fd2f2930dde345143a239e3755d6c6e0bfe32470..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/pl_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Instalacja pakietu oprogramowania'; -$wb['install_key_txt'] = 'Podaj klucz instalacyjny'; -$wb['btn_save_txt'] = 'Start instalacji'; -$wb['btn_cancel_txt'] = 'Przerwij'; -?> diff --git a/interface/web/admin/lib/lang/pl_software_package_list.lng b/interface/web/admin/lib/lang/pl_software_package_list.lng deleted file mode 100644 index cb47abc46d380b691323486a72343a62f531b3ce..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/pl_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Pakiety z oprogramowaniem'; -$wb['installed_txt'] = 'Status'; -$wb['package_title_txt'] = 'Pakiet'; -$wb['package_description_txt'] = 'Opis'; -$wb['action_txt'] = 'Akcja'; -$wb['toolsarea_head_txt'] = 'Pakiety'; -$wb['repoupdate_txt'] = 'Aktualizuj listÄ™ pakietów'; -$wb['package_id_txt'] = 'lokalny App-ID'; -$wb['no_packages_txt'] = 'Brak dostÄ™pnych pakietów'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/pl_software_repo.lng b/interface/web/admin/lib/lang/pl_software_repo.lng deleted file mode 100644 index 1cc3dbb61c0846e040754b5462bb40ccf7cad308..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/pl_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Repozytorium'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'Użytkownik (Opcjonalnie)'; -$wb['repo_password_txt'] = 'HasÅ‚o (Opcjonalnie)'; -$wb['active_txt'] = 'Aktywny'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/pl_software_repo_list.lng b/interface/web/admin/lib/lang/pl_software_repo_list.lng deleted file mode 100644 index 7ca6af9f9f43559891103a0c50ebd189da3f795b..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/pl_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Repozytoria'; -$wb['active_txt'] = 'Aktywny'; -$wb['repo_name_txt'] = 'Repozytoria'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/pl_software_update_list.lng b/interface/web/admin/lib/lang/pl_software_update_list.lng deleted file mode 100644 index aa49fba4e72ce46c22c3ca7a2d0a23ee6728a8f9..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/pl_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Aktualizacje oprogramowania'; -$wb['server_select_txt'] = 'Wybierz serwer'; -$wb['installed_txt'] = 'Akcja'; -$wb['update_title_txt'] = 'Aktualizacja'; -$wb['version_txt'] = 'Wersja'; -$wb['action_txt'] = 'Akcja'; -$wb['no_updates_txt'] = 'Nie ma dostÄ™pnych aktualizacji'; -?> diff --git a/interface/web/admin/lib/lang/pl_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng index c94313bdcbc4e5682957fd1493f7f8457a5927df..92b167c60d8c60ba4f19082d4c49a21da2b3a085 100644 --- a/interface/web/admin/lib/lang/pl_system_config.lng +++ b/interface/web/admin/lib/lang/pl_system_config.lng @@ -22,6 +22,7 @@ $wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; $wb['webdavuser_prefix_txt'] = 'Prefiks użytkownika webdav'; $wb['webdavuser_prefix_error_regex'] = 'Niedozwolony znak w prefiksie użytkownika webdav.'; $wb['webftp_url_txt'] = 'Link do WebFTP'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Zezwalaj na dowolnÄ… nazwÄ™ loginu'; $wb['mailmailinglist_link_txt'] = 'Link do listy mailingowej na liÅ›cie list mailingowych'; $wb['mailmailinglist_url_txt'] = 'URL listy mailingowej'; @@ -51,6 +52,7 @@ $wb['use_loadindicator_txt'] = 'Użyj wskaźnika Å‚adowania'; $wb['f5_to_reload_js_txt'] = 'Jeżeli zmienisz to, możesz potrzebować wcisnąć F5 lub wyczyÅ›cić cache aby przeglÄ…darka przeÅ‚adowaÅ‚a biblioteki JavaScript.'; $wb['client_username_web_check_disabled_txt'] = 'WyÅ‚Ä…cz sprawdzanie nazwy klienta w poszukiwaniu sÅ‚owa -web-.'; $wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Pokaż zakÅ‚adkÄ™ autorespondera w szczegółach konta email.'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Pokaż zakÅ‚adkÄ™ filtra email w szczegółach konta email.'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Pokaż zakÅ‚adkÄ™ wÅ‚asnych filtrów email w szczegółach konta email.'; diff --git a/interface/web/admin/lib/lang/pt_remote_action.lng b/interface/web/admin/lib/lang/pt_remote_action.lng index 3f8948e19f602408715f9554606f5478359bec9a..dfe56b616d5b3d18abd7eb9965b8c5602cb4354c 100644 --- a/interface/web/admin/lib/lang/pt_remote_action.lng +++ b/interface/web/admin/lib/lang/pt_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Select Server'; $wb['btn_do_txt'] = 'Execute action'; $wb['do_osupdate_caption'] = 'Do OS-Update at remote server'; -$wb['do_osupdate_desc'] = 'This Action does a aptitude -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; +$wb['do_osupdate_desc'] = 'This Action does a apt -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['do_ispcupdate_caption'] = 'Do ISPConfig 3 - Update at remote server'; $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['action_scheduled'] = 'The action is scheduled for execution'; diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index 6b581c85939cbb7834919da94b4eed0017840a76..468413a1deab53236c67c84e6e51018e5709fd03 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/pt_server_php.lng b/interface/web/admin/lib/lang/pt_server_php.lng index 179a8fc357142ea401cd663697ef817237957d10..491be1aae2ecd613527e187940420d748137ed86 100644 --- a/interface/web/admin/lib/lang/pt_server_php.lng +++ b/interface/web/admin/lib/lang/pt_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/pt_software_package.lng b/interface/web/admin/lib/lang/pt_software_package.lng deleted file mode 100644 index faffe38217fb9cac04020e73e473c6c46e3caaa1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/pt_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> diff --git a/interface/web/admin/lib/lang/pt_software_package_install.lng b/interface/web/admin/lib/lang/pt_software_package_install.lng deleted file mode 100644 index 5c8b756434ce27d67e479a96383bbee01bce4f1f..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/pt_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Install software package'; -$wb['install_key_txt'] = 'Enter install key'; -$wb['btn_save_txt'] = 'Start Installation'; -$wb['btn_cancel_txt'] = 'Cancel'; -?> diff --git a/interface/web/admin/lib/lang/pt_software_package_list.lng b/interface/web/admin/lib/lang/pt_software_package_list.lng deleted file mode 100644 index 1ec77bdd15f5403cd7bae71e328b56c5666f21ae..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/pt_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Pacotes de Software'; -$wb['installed_txt'] = 'Status'; -$wb['package_title_txt'] = 'Pacote'; -$wb['package_description_txt'] = 'Descrição'; -$wb['action_txt'] = 'Acção'; -$wb['toolsarea_head_txt'] = 'Packages'; -$wb['repoupdate_txt'] = 'Update package list'; -$wb['package_id_txt'] = 'local App-ID'; -$wb['no_packages_txt'] = 'No packages available'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/pt_software_repo.lng b/interface/web/admin/lib/lang/pt_software_repo.lng deleted file mode 100644 index 436758e6871176d63b44f4eb812ebe2b945dc187..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/pt_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Repositório'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'Utilizador (opcional)'; -$wb['repo_password_txt'] = 'Senha (opcional)'; -$wb['active_txt'] = 'Activo'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/pt_software_repo_list.lng b/interface/web/admin/lib/lang/pt_software_repo_list.lng deleted file mode 100644 index 5afba6d5e354b883e14193e3b1e45af361fbd135..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/pt_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Repositório'; -$wb['active_txt'] = 'Activo'; -$wb['repo_name_txt'] = 'Repositório'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/pt_software_update_list.lng b/interface/web/admin/lib/lang/pt_software_update_list.lng deleted file mode 100644 index 12fd9e2fa9106e1b1e6087fe06fc4dc641b1f71e..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/pt_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Actualizações de Programas'; -$wb['server_select_txt'] = 'Seleccione o servidor'; -$wb['installed_txt'] = 'Acções'; -$wb['update_title_txt'] = 'Actualizar'; -$wb['version_txt'] = 'Versão'; -$wb['action_txt'] = 'Acção'; -$wb['no_updates_txt'] = 'No updates available'; -?> diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng index 39e4dc93f235ae9ddc8139bf4eada0152b6c7cac..491aa6272c75a24b0710fb9e04ead319a9288c25 100644 --- a/interface/web/admin/lib/lang/pt_system_config.lng +++ b/interface/web/admin/lib/lang/pt_system_config.lng @@ -23,6 +23,7 @@ $wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; $wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; $wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; $wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Allow custom login name'; $wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; $wb['mailmailinglist_url_txt'] = 'Mailing list URL'; @@ -51,6 +52,7 @@ $wb['use_loadindicator_txt'] = 'Use Load Indicator'; $wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; $wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; $wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; diff --git a/interface/web/admin/lib/lang/ro_remote_action.lng b/interface/web/admin/lib/lang/ro_remote_action.lng index 3f8948e19f602408715f9554606f5478359bec9a..dfe56b616d5b3d18abd7eb9965b8c5602cb4354c 100644 --- a/interface/web/admin/lib/lang/ro_remote_action.lng +++ b/interface/web/admin/lib/lang/ro_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Select Server'; $wb['btn_do_txt'] = 'Execute action'; $wb['do_osupdate_caption'] = 'Do OS-Update at remote server'; -$wb['do_osupdate_desc'] = 'This Action does a aptitude -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; +$wb['do_osupdate_desc'] = 'This Action does a apt -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['do_ispcupdate_caption'] = 'Do ISPConfig 3 - Update at remote server'; $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['action_scheduled'] = 'The action is scheduled for execution'; diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index e15c99fb675b9cdeec59cc30e8b19e0434a4fa5e..e20fb9ee9f5ecc75ea9ad8da2a475878bc0c9f1d 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/ro_server_php.lng b/interface/web/admin/lib/lang/ro_server_php.lng index 179a8fc357142ea401cd663697ef817237957d10..491be1aae2ecd613527e187940420d748137ed86 100644 --- a/interface/web/admin/lib/lang/ro_server_php.lng +++ b/interface/web/admin/lib/lang/ro_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/ro_software_package.lng b/interface/web/admin/lib/lang/ro_software_package.lng deleted file mode 100644 index faffe38217fb9cac04020e73e473c6c46e3caaa1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ro_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> diff --git a/interface/web/admin/lib/lang/ro_software_package_install.lng b/interface/web/admin/lib/lang/ro_software_package_install.lng deleted file mode 100644 index 5c8b756434ce27d67e479a96383bbee01bce4f1f..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ro_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Install software package'; -$wb['install_key_txt'] = 'Enter install key'; -$wb['btn_save_txt'] = 'Start Installation'; -$wb['btn_cancel_txt'] = 'Cancel'; -?> diff --git a/interface/web/admin/lib/lang/ro_software_package_list.lng b/interface/web/admin/lib/lang/ro_software_package_list.lng deleted file mode 100644 index 4a8dcbcbf09d1141554f5f73e6a0cea790911448..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ro_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Pachete Software '; -$wb['installed_txt'] = 'Status'; -$wb['package_title_txt'] = 'Pachet'; -$wb['package_description_txt'] = 'Descriere'; -$wb['action_txt'] = 'Actiune'; -$wb['toolsarea_head_txt'] = 'Packages'; -$wb['repoupdate_txt'] = 'Update package list'; -$wb['package_id_txt'] = 'local App-ID'; -$wb['no_packages_txt'] = 'No packages available'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/ro_software_repo.lng b/interface/web/admin/lib/lang/ro_software_repo.lng deleted file mode 100644 index f2cbbb2c25776ab5f1794e7102ad264a98144049..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ro_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'User (optional)'; -$wb['repo_password_txt'] = 'Password (optional)'; -$wb['active_txt'] = 'Active'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/ro_software_repo_list.lng b/interface/web/admin/lib/lang/ro_software_repo_list.lng deleted file mode 100644 index b7a219ffa8e2f6d389fabdc5386286a24fc2a11a..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ro_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Repository'; -$wb['active_txt'] = 'Active'; -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/ro_software_update_list.lng b/interface/web/admin/lib/lang/ro_software_update_list.lng deleted file mode 100644 index 1e85d6de5f373ca10133099e354f59a3debe33f1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ro_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Software update'; -$wb['server_select_txt'] = 'Selectie server'; -$wb['installed_txt'] = 'Actiune'; -$wb['update_title_txt'] = 'Update'; -$wb['version_txt'] = 'Versiune'; -$wb['action_txt'] = 'Actiune'; -$wb['no_updates_txt'] = 'No updates available'; -?> diff --git a/interface/web/admin/lib/lang/ro_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng index 2b819a013ecca8ac102195e7f21cdfc5f0906a6d..fc268d22410452399e5fc8e62a5e36243deaf951 100644 --- a/interface/web/admin/lib/lang/ro_system_config.lng +++ b/interface/web/admin/lib/lang/ro_system_config.lng @@ -23,6 +23,7 @@ $wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; $wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; $wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; $wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Allow custom login name'; $wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; $wb['mailmailinglist_url_txt'] = 'Mailing list URL'; @@ -51,6 +52,7 @@ $wb['use_loadindicator_txt'] = 'Use Load Indicator'; $wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; $wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; $wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; diff --git a/interface/web/admin/lib/lang/ro_users_list.lng b/interface/web/admin/lib/lang/ro_users_list.lng index c928d6b86f0f38bae8c151f756f4d00593811146..a69fd3dccf08c306532bbfe1fc7206bff8cdc085 100644 --- a/interface/web/admin/lib/lang/ro_users_list.lng +++ b/interface/web/admin/lib/lang/ro_users_list.lng @@ -4,6 +4,6 @@ $wb['username_txt'] = 'Username'; $wb['client_id_txt'] = 'Client ID'; $wb['active_txt'] = 'Active'; $wb['add_new_record_txt'] = 'Add user nou'; -$wb['warning_txt'] = '<b>WARNING:</b> Do not edit or modify any user settings here. Use the Client- and Reseller settings in the Client module instead. Modifying or changing users or groups here may cause data loss!'; +$wb['warning_txt'] = '<b>WARNING:</b> Do not edit or modify any client user settings here. Use the client- and reseller settings in the client module instead. Modifying or changing client users or groups here may cause data loss!'; $wb['groups_txt'] = 'Groups'; ?> diff --git a/interface/web/admin/lib/lang/ru_remote_action.lng b/interface/web/admin/lib/lang/ru_remote_action.lng index 858d96b02ef558f5841015886d5d1bbf9ca4c9ee..f9d10afc53873d8670b06aba9649012d29690ced 100644 --- a/interface/web/admin/lib/lang/ru_remote_action.lng +++ b/interface/web/admin/lib/lang/ru_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Выбор Ñервера'; $wb['btn_do_txt'] = 'Выполнить дейÑтвие'; $wb['do_osupdate_caption'] = 'Обновление ОС на удалённом Ñервере'; -$wb['do_osupdate_desc'] = 'Ðто дейÑтвие выполнит <strong>aptitude -y upgrade</strong> на выбранном Ñервере.<br><br><strong>ИСПОЛЬЗУЙТЕ ÐТО ÐРСВОЙ СТРÐÐ¥ И РИСК!</strong>'; +$wb['do_osupdate_desc'] = 'Ðто дейÑтвие выполнит <strong>apt -y upgrade</strong> на выбранном Ñервере.<br><br><strong>ИСПОЛЬЗУЙТЕ ÐТО ÐРСВОЙ СТРÐÐ¥ И РИСК!</strong>'; $wb['do_ispcupdate_caption'] = 'ЗапуÑк Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ISPConfig 3 на удалённом Ñервере'; $wb['do_ispcupdate_desc'] = 'Ðто дейÑтвие выполнит обновление ISPConfig 3 на выбранном Ñервере.<br><br><strong>ИСПОЛЬЗУЙТЕ ÐТО ÐРСВОЙ СТРÐÐ¥ И РИСК!</strong>'; $wb['action_scheduled'] = 'ДейÑтвие запланировано на выполнение'; diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index 3465d2120dc1a5d2aca98f5a38a47764931d1230..1799b075f49fd9155b07b7cc667f8fd9cc161f9e 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/ru_server_php.lng b/interface/web/admin/lib/lang/ru_server_php.lng index 854b8a3c23ebb0a392d77f14bd1947c81f60e3dd..c5c4942b8e08ebf2cbfdba21300d413857356c1d 100644 --- a/interface/web/admin/lib/lang/ru_server_php.lng +++ b/interface/web/admin/lib/lang/ru_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Путь к каталогу php.ini FastCGI'; $wb['php_fpm_init_script_txt'] = 'Путь к Ñкрипту нициализации PHP-FPM'; $wb['php_fpm_ini_dir_txt'] = 'Путь к каталогу php.ini PHP-FPM'; $wb['php_fpm_pool_dir_txt'] = 'Путь до каталога пула PHP-FPM'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/ru_software_package.lng b/interface/web/admin/lib/lang/ru_software_package.lng deleted file mode 100644 index 490184dd9273e48d69c9cecfdd313c95684a75f3..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ru_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Ðазвание пакета'; -$wb['package_key_txt'] = 'Ключ пакета'; -$wb['Software Package'] = 'Пакет ПО'; -$wb['Modify software package details'] = 'Изменить детали пакета программного обеÑпечениÑ'; -?> diff --git a/interface/web/admin/lib/lang/ru_software_package_install.lng b/interface/web/admin/lib/lang/ru_software_package_install.lng deleted file mode 100644 index 21efc7d5629d6f3eb9f561786eff2858d8afd2c8..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ru_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'УÑтановить пакет ПО'; -$wb['install_key_txt'] = 'Ввод ключа уÑтановки'; -$wb['btn_save_txt'] = 'Ðачать уÑтановку'; -$wb['btn_cancel_txt'] = 'Отменить'; -?> diff --git a/interface/web/admin/lib/lang/ru_software_package_list.lng b/interface/web/admin/lib/lang/ru_software_package_list.lng deleted file mode 100644 index 791cfa33aed4e3141df8a82bf1c4a0f6d9dbb27f..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ru_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Пакеты ПО'; -$wb['installed_txt'] = 'СтатуÑ'; -$wb['package_title_txt'] = 'Пакет'; -$wb['package_description_txt'] = 'ОпиÑание'; -$wb['action_txt'] = 'ДейÑтвие'; -$wb['toolsarea_head_txt'] = 'Packages'; -$wb['repoupdate_txt'] = 'Обновить ÑиÑок пакетов'; -$wb['package_id_txt'] = 'Локальный App-ID'; -$wb['no_packages_txt'] = 'Ðет доÑтупных пакетов'; -$wb['edit_txt'] = 'Изменить'; -$wb['delete_txt'] = 'Удалить'; -?> diff --git a/interface/web/admin/lib/lang/ru_software_repo.lng b/interface/web/admin/lib/lang/ru_software_repo.lng deleted file mode 100644 index 5aec8763c173d4ac73419c725857b0978e1b8743..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ru_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Репозиторий'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'Логин (опционально)'; -$wb['repo_password_txt'] = 'Пароль (опционально)'; -$wb['active_txt'] = 'Ðктивен?'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/ru_software_repo_list.lng b/interface/web/admin/lib/lang/ru_software_repo_list.lng deleted file mode 100644 index ed307454aef1042f662726326029eb9ed541340f..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ru_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Репозитории'; -$wb['active_txt'] = 'Ðктивно'; -$wb['repo_name_txt'] = 'Репозиторий'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/ru_software_update_list.lng b/interface/web/admin/lib/lang/ru_software_update_list.lng deleted file mode 100644 index dde28811d537a8d95b07736564cae1f6d81659cd..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/ru_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Обновление ПО'; -$wb['installed_txt'] = 'ДейÑтвие'; -$wb['update_title_txt'] = 'Обновить'; -$wb['version_txt'] = 'ВерÑиÑ'; -$wb['action_txt'] = 'ДейÑтвие'; -$wb['server_select_txt'] = 'Выберите Ñервер'; -$wb['no_updates_txt'] = 'Ðет доÑтупных обновлений'; -?> diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng index 3aee07ff2ed7c958ef07e36f98650743e6a5ee77..ae12c4b4c1682d4b63b38159635896325dafce5d 100644 --- a/interface/web/admin/lib/lang/ru_system_config.lng +++ b/interface/web/admin/lib/lang/ru_system_config.lng @@ -23,6 +23,7 @@ $wb['webftp_url_txt'] = 'URL WebFTP'; $wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; $wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; $wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Разрешить пользовательÑкое Ð¸Ð¼Ñ Ð²Ñ…Ð¾Ð´Ð° в ÑиÑтему'; $wb['mailmailinglist_link_txt'] = 'СÑылка на почтовую раÑÑылку в ÑпиÑке раÑÑылок'; $wb['mailmailinglist_url_txt'] = 'URL почтовой раÑÑылки'; @@ -51,6 +52,7 @@ $wb['use_loadindicator_txt'] = 'ИÑпользовать индикатор за $wb['f5_to_reload_js_txt'] = 'ЕÑли вы измените Ñто, вам, возможно, придетÑÑ Ð½Ð°Ð¶Ð°Ñ‚ÑŒ F5, чтобы перезагрузить в браузере JavaScript-библиотеи или очиÑтить кÑш браузера.'; $wb['client_username_web_check_disabled_txt'] = 'Отключить проверку логина клиента Ð´Ð»Ñ Ñлова \'web\'.'; $wb['backups_include_into_web_quota_txt'] = 'Включить резервное копирование файлов в веб-квоту.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Показывать вкладку автоответчика в деталÑÑ… учетной запиÑи Ñлектронной почты'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Показывать вкладку почтового фильтра в деталÑÑ… учетной запиÑи Ñлектронной почты'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Показывать вкладку пользовательÑкого почтового фильтра в деталÑÑ… учетной запиÑи Ñлектронной почты'; diff --git a/interface/web/admin/lib/lang/se_remote_action.lng b/interface/web/admin/lib/lang/se_remote_action.lng index fe6a849905a143f773ec78e3ac2dab2af6233223..9aeb7d9ba3c3e193cbd625b3aebcc1bcbb2e9f97 100644 --- a/interface/web/admin/lib/lang/se_remote_action.lng +++ b/interface/web/admin/lib/lang/se_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Välj server'; $wb['btn_do_txt'] = 'Utför handling'; $wb['do_osupdate_caption'] = 'Utför OS-uppdatering pÃ¥ fjärrserver'; -$wb['do_osupdate_desc'] = 'This Action does a aptitude -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; +$wb['do_osupdate_desc'] = 'This Action does a apt -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['do_ispcupdate_caption'] = 'Utför ISPConfig 3 -uppdatering pÃ¥ fjärrserver'; $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['action_scheduled'] = 'Handlingen är schemalagd att utföras'; diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index 9bbbcc80ac3c6db18c57385e544563ccd7b43185..fe3c2e923401b8d1a9ce1e76ef870513e5c3f30d 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/se_server_php.lng b/interface/web/admin/lib/lang/se_server_php.lng index 179a8fc357142ea401cd663697ef817237957d10..491be1aae2ecd613527e187940420d748137ed86 100644 --- a/interface/web/admin/lib/lang/se_server_php.lng +++ b/interface/web/admin/lib/lang/se_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/se_software_package.lng b/interface/web/admin/lib/lang/se_software_package.lng deleted file mode 100644 index 086902db0cbddab5c57150f462e0583e020903a6..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/se_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Pakettitel'; -$wb['package_key_txt'] = 'Packetnyckel'; -$wb['Software Package'] = 'Mjukvarupaket'; -$wb['Modify software package details'] = 'Redigera mjukvarupaketets uppgifter'; -?> diff --git a/interface/web/admin/lib/lang/se_software_package_install.lng b/interface/web/admin/lib/lang/se_software_package_install.lng deleted file mode 100644 index 434fc4bc98139ec1e01a513bd4cd8036e446edb7..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/se_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Installera mjukvarupaket'; -$wb['install_key_txt'] = 'Fyll i installationsnyckel'; -$wb['btn_save_txt'] = 'PÃ¥börja installation'; -$wb['btn_cancel_txt'] = 'Avbryt'; -?> diff --git a/interface/web/admin/lib/lang/se_software_package_list.lng b/interface/web/admin/lib/lang/se_software_package_list.lng deleted file mode 100644 index c0222e1ba4fb975e56722d0080afde3d734e0cfb..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/se_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Mjukvarupaket'; -$wb['installed_txt'] = 'Status'; -$wb['package_title_txt'] = 'Paket'; -$wb['package_description_txt'] = 'Beskrivning'; -$wb['action_txt'] = 'Händelse'; -$wb['toolsarea_head_txt'] = 'Paket'; -$wb['repoupdate_txt'] = 'Uppdatera paketlista'; -$wb['package_id_txt'] = 'lokalt App-ID'; -$wb['no_packages_txt'] = 'Inga paket tillgängliga'; -$wb['edit_txt'] = 'Redigera'; -$wb['delete_txt'] = 'Radera'; -?> diff --git a/interface/web/admin/lib/lang/se_software_repo.lng b/interface/web/admin/lib/lang/se_software_repo.lng deleted file mode 100644 index a0e0de6822419055beee042cb8df66b7532d9984..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/se_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Bibliotek'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'Användare (Frivilligt)'; -$wb['repo_password_txt'] = 'Lösenord (Frivilligt)'; -$wb['active_txt'] = 'Aktiv'; -$wb['Software Repository which may contain addons or updates'] = 'Pragarmvarubibliotek som kan innehÃ¥lla uppdateringar eller tillägg'; -?> diff --git a/interface/web/admin/lib/lang/se_software_repo_list.lng b/interface/web/admin/lib/lang/se_software_repo_list.lng deleted file mode 100644 index b7a219ffa8e2f6d389fabdc5386286a24fc2a11a..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/se_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Repository'; -$wb['active_txt'] = 'Active'; -$wb['repo_name_txt'] = 'Repository'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/se_software_update_list.lng b/interface/web/admin/lib/lang/se_software_update_list.lng deleted file mode 100644 index 0cf7c0eddc2c9c336c80085af3a5cb98b0f0d806..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/se_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Programvaruuppdateringar'; -$wb['installed_txt'] = 'Händelse'; -$wb['update_title_txt'] = 'Uppdatera'; -$wb['version_txt'] = 'Version'; -$wb['action_txt'] = 'Händelse'; -$wb['server_select_txt'] = 'Välj server'; -$wb['no_updates_txt'] = 'Inga tillgängliga uppdateringar'; -?> diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng index d075f875097ad66a94ab5e0069f457abc303d5fd..fa302c344aa1531d3e2fc0e7863ec5823088b601 100644 --- a/interface/web/admin/lib/lang/se_system_config.lng +++ b/interface/web/admin/lib/lang/se_system_config.lng @@ -23,6 +23,7 @@ $wb['dashboard_atom_url_client_txt'] = 'Kontrolpanelens nyhetsflöde URL (kund)' $wb['webdavuser_prefix_txt'] = 'Prefix för WebDAV-användare'; $wb['webdavuser_prefix_error_regex'] = 'OtillÃ¥tet tecken i prefix för WebDAV-användare'; $wb['webftp_url_txt'] = 'WebbFTP URL'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'TillÃ¥t valfritt inloggningsnamn'; $wb['mailmailinglist_link_txt'] = 'Länka till epostlista i listan över epostlistor'; $wb['mailmailinglist_url_txt'] = 'Adress till epostlista'; @@ -51,6 +52,7 @@ $wb['use_loadindicator_txt'] = 'Använd laddningsindikator'; $wb['f5_to_reload_js_txt'] = 'Om du ändrar detta kan du behöva trycka F5 för att ladda om javascript, eller rensa din webbläsarcache.'; $wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; $wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Visa autosvarsfliken vid detaljerna för epostkonto'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Visa epostfilterfliken vid detaljerna för epostkonto'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; diff --git a/interface/web/admin/lib/lang/sk_remote_action.lng b/interface/web/admin/lib/lang/sk_remote_action.lng index 3f8948e19f602408715f9554606f5478359bec9a..dfe56b616d5b3d18abd7eb9965b8c5602cb4354c 100644 --- a/interface/web/admin/lib/lang/sk_remote_action.lng +++ b/interface/web/admin/lib/lang/sk_remote_action.lng @@ -2,7 +2,7 @@ $wb['select_server_txt'] = 'Select Server'; $wb['btn_do_txt'] = 'Execute action'; $wb['do_osupdate_caption'] = 'Do OS-Update at remote server'; -$wb['do_osupdate_desc'] = 'This Action does a aptitude -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; +$wb['do_osupdate_desc'] = 'This Action does a apt -y upgrade at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['do_ispcupdate_caption'] = 'Do ISPConfig 3 - Update at remote server'; $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your selected server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>'; $wb['action_scheduled'] = 'The action is scheduled for execution'; diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 1b96cf57adb73b731bd17ab070bde1603d079db0..bc7f9f514bdb25db6f112c4bef47c44a7817530d 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -316,6 +316,14 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/sk_server_php.lng b/interface/web/admin/lib/lang/sk_server_php.lng index 179a8fc357142ea401cd663697ef817237957d10..491be1aae2ecd613527e187940420d748137ed86 100644 --- a/interface/web/admin/lib/lang/sk_server_php.lng +++ b/interface/web/admin/lib/lang/sk_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Active'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/sk_software_package.lng b/interface/web/admin/lib/lang/sk_software_package.lng deleted file mode 100644 index faffe38217fb9cac04020e73e473c6c46e3caaa1..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/sk_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Package Title'; -$wb['package_key_txt'] = 'Package Key'; -$wb['Software Package'] = 'Software Package'; -$wb['Modify software package details'] = 'Modify software package details'; -?> diff --git a/interface/web/admin/lib/lang/sk_software_package_install.lng b/interface/web/admin/lib/lang/sk_software_package_install.lng deleted file mode 100644 index 5c8b756434ce27d67e479a96383bbee01bce4f1f..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/sk_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Install software package'; -$wb['install_key_txt'] = 'Enter install key'; -$wb['btn_save_txt'] = 'Start Installation'; -$wb['btn_cancel_txt'] = 'Cancel'; -?> diff --git a/interface/web/admin/lib/lang/sk_software_package_list.lng b/interface/web/admin/lib/lang/sk_software_package_list.lng deleted file mode 100644 index 502a3a2237707e5c196a6b6523743c118fb02870..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/sk_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Softvérové balÃky'; -$wb['installed_txt'] = 'Stav'; -$wb['package_title_txt'] = 'BalÃky'; -$wb['package_description_txt'] = 'Popis'; -$wb['action_txt'] = 'Akcia'; -$wb['toolsarea_head_txt'] = 'Packages'; -$wb['repoupdate_txt'] = 'Update package list'; -$wb['package_id_txt'] = 'local App-ID'; -$wb['no_packages_txt'] = 'No packages available'; -$wb['edit_txt'] = 'Edit'; -$wb['delete_txt'] = 'Delete'; -?> diff --git a/interface/web/admin/lib/lang/sk_software_repo.lng b/interface/web/admin/lib/lang/sk_software_repo.lng deleted file mode 100644 index 263614f50c2b62177cdaf21eb27de6d42b6adc64..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/sk_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Skladisko'; -$wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'Uživateľ (voliteľný)'; -$wb['repo_password_txt'] = 'Heslo (voliteľné)'; -$wb['active_txt'] = 'AktivovaÅ¥'; -$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; -?> diff --git a/interface/web/admin/lib/lang/sk_software_repo_list.lng b/interface/web/admin/lib/lang/sk_software_repo_list.lng deleted file mode 100644 index c77d4a3846eb7cbcdd5aa639f7c63e96aba501ee..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/sk_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Skladisko'; -$wb['active_txt'] = 'AktÃvne'; -$wb['repo_name_txt'] = 'Skladisko'; -$wb['repo_url_txt'] = 'URL'; -?> diff --git a/interface/web/admin/lib/lang/sk_software_update_list.lng b/interface/web/admin/lib/lang/sk_software_update_list.lng deleted file mode 100644 index 9a04707c3ed2dc48e79ece8016eab73babe8f86e..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/sk_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Aktualizácia softvéru'; -$wb['server_select_txt'] = 'Vyberte server'; -$wb['installed_txt'] = 'Akcia'; -$wb['update_title_txt'] = 'Aktualizácia '; -$wb['version_txt'] = 'Verzia'; -$wb['action_txt'] = 'Akcia'; -$wb['no_updates_txt'] = 'No updates available'; -?> diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng index ef4cc3fef932e498a3b92ab2cbfd01245a15ef98..6735e91c53f82691edd308d6d07b8723f1f0296c 100644 --- a/interface/web/admin/lib/lang/sk_system_config.lng +++ b/interface/web/admin/lib/lang/sk_system_config.lng @@ -23,6 +23,7 @@ $wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; $wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They cannot free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; $wb['new_domain_txt'] = 'HTML to create a new domain'; $wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Allow custom login name'; $wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; $wb['mailmailinglist_url_txt'] = 'Mailing list URL'; @@ -51,6 +52,7 @@ $wb['use_loadindicator_txt'] = 'Use Load Indicator'; $wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; $wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; $wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; diff --git a/interface/web/admin/lib/lang/sk_users_list.lng b/interface/web/admin/lib/lang/sk_users_list.lng index c393f199928e5c338133613368c407e956065cd3..49746bddaf252d746f2b72a12ff4e77f83185617 100644 --- a/interface/web/admin/lib/lang/sk_users_list.lng +++ b/interface/web/admin/lib/lang/sk_users_list.lng @@ -4,6 +4,6 @@ $wb['username_txt'] = 'UžÃvateľské meno'; $wb['client_id_txt'] = 'Client ID'; $wb['active_txt'] = 'Active'; $wb['add_new_record_txt'] = 'PridaÅ¥ nového užÃvateľa'; -$wb['warning_txt'] = '<b>WARNING:</b> Do not edit or modify any user settings here. Use the Client- and Reseller settings in the Client module instead. Modifying or changing users or groups here may cause data loss!'; +$wb['warning_txt'] = '<b>WARNING:</b> Do not edit or modify any client user settings here. Use the client- and reseller settings in the client module instead. Modifying or changing client users or groups here may cause data loss!'; $wb['groups_txt'] = 'Groups'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 84210ce9b8229a5eb8461d42089649c7adcc0ba7..0d0c84f2c73f873cb7dffb245c8deeb9e1ce2b22 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -310,6 +310,17 @@ $wb['log_retention_error_ispositive'] = 'Günlük tutma süresi 0 deÄŸerinden b $wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Varsayılan PHP Sürümü Açıklaması'; $wb['php_default_name_error_empty'] = 'Varsayılan PHP sürümü açıklaması boÅŸ olamaz'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['rspamd_redis_servers_txt'] = 'Redis Servers'; +$wb['tooltip_rspamd_redis_servers_txt'] = 'Redis server(s) which Rspamd will use. Eg. \'127.0.0.1\', \'localhost:6379\' or \'/var/run/redis/redis-server.sock\'.'; +$wb['rspamd_redis_password_txt'] = 'Redis Password'; +$wb['tooltip_rspamd_redis_password_txt'] = 'Password for Redis Servers (leave blank if unused).'; +$wb['rspamd_redis_bayes_servers_txt'] = 'Redis Servers for Bayes'; +$wb['tooltip_rspamd_redis_bayes_servers_txt'] = 'Redis server(s) which Rspamd will use for Bayes if different (otherwise leave blank). Eg. \'localhost:6378\' or \'/var/run/redis-bayes/redis-server.sock\'.'; +$wb['rspamd_redis_bayes_password_txt'] = 'Redis Password for Bayes'; +$wb['tooltip_rspamd_redis_bayes_password_txt'] = 'Password for Bayes Redis Server (leave blank if unused).'; $wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; $wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; $wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/tr_server_php.lng b/interface/web/admin/lib/lang/tr_server_php.lng index e0437e94b323a1aa5d463d2b7652db266e167669..71b130e3d25bcf8ef9d8a553932416ed13b197b6 100644 --- a/interface/web/admin/lib/lang/tr_server_php.lng +++ b/interface/web/admin/lib/lang/tr_server_php.lng @@ -13,5 +13,8 @@ $wb['php_fastcgi_ini_dir_txt'] = 'php.ini Klasörünün Yolu'; $wb['php_fpm_init_script_txt'] = 'PHP-FPM BaÅŸlatma BetiÄŸinin Yolu'; $wb['php_fpm_ini_dir_txt'] = 'php.ini Klasörünün Yolu'; $wb['php_fpm_pool_dir_txt'] = 'PHP-FPM Havuz Klasörünün Yolu'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory'; $wb['active_txt'] = 'Etkin'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/lib/lang/tr_software_package.lng b/interface/web/admin/lib/lang/tr_software_package.lng deleted file mode 100644 index addda60195a1bb25f115b50b835b59153eea8030..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/tr_software_package.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['package_title_txt'] = 'Paket BaÅŸlığı'; -$wb['package_key_txt'] = 'Paket Anahtarı'; -$wb['Software Package'] = 'Yazılım Paketi'; -$wb['Modify software package details'] = 'Yazılım paketi bilgilerini düzenle'; -?> diff --git a/interface/web/admin/lib/lang/tr_software_package_install.lng b/interface/web/admin/lib/lang/tr_software_package_install.lng deleted file mode 100644 index fe7dd26e735ac376fc846b932c0cc806d9347eed..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/tr_software_package_install.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['head_txt'] = 'Yazılım Paketi Yükleme'; -$wb['install_key_txt'] = 'Yükleme anahtarını yazın'; -$wb['btn_save_txt'] = 'Yüklemeyi BaÅŸlat'; -$wb['btn_cancel_txt'] = 'Geri'; -?> diff --git a/interface/web/admin/lib/lang/tr_software_package_list.lng b/interface/web/admin/lib/lang/tr_software_package_list.lng deleted file mode 100644 index 1838ff94cfc3b7f0e87cfd68f1bb25da551f4988..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/tr_software_package_list.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Yazılım Paketleri'; -$wb['installed_txt'] = 'Durum'; -$wb['package_title_txt'] = 'Paket'; -$wb['package_description_txt'] = 'Açıklama'; -$wb['action_txt'] = 'Ä°ÅŸlem'; -$wb['toolsarea_head_txt'] = 'Paketler'; -$wb['repoupdate_txt'] = 'Paket Listesini Güncelle'; -$wb['package_id_txt'] = 'yerel uygulama kodu'; -$wb['no_packages_txt'] = 'Henüz kullanılabilecek bir paket yok'; -$wb['edit_txt'] = 'Düzenle'; -$wb['delete_txt'] = 'Sil'; -?> diff --git a/interface/web/admin/lib/lang/tr_software_repo.lng b/interface/web/admin/lib/lang/tr_software_repo.lng deleted file mode 100644 index 13e113967fad2f6fe9ef10ee1d190abc9ab7fd23..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/tr_software_repo.lng +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$wb['repo_name_txt'] = 'Depo'; -$wb['repo_url_txt'] = 'Ä°nternet Adresi'; -$wb['repo_username_txt'] = 'Kullanıcı Adı (isteÄŸe baÄŸlı)'; -$wb['repo_password_txt'] = 'Parola (isteÄŸe baÄŸlı)'; -$wb['active_txt'] = 'Etkin'; -$wb['Software Repository which may contain addons or updates'] = 'Eklenti ya da güncellemeleri içeren yazılım deposu'; -?> diff --git a/interface/web/admin/lib/lang/tr_software_repo_list.lng b/interface/web/admin/lib/lang/tr_software_repo_list.lng deleted file mode 100644 index 5e2fdf5b928950f51e2da6d597739afef36d1d11..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/tr_software_repo_list.lng +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Depolar'; -$wb['active_txt'] = 'Etkin'; -$wb['repo_name_txt'] = 'Depo'; -$wb['repo_url_txt'] = 'Ä°nternet Adresi'; -?> diff --git a/interface/web/admin/lib/lang/tr_software_update_list.lng b/interface/web/admin/lib/lang/tr_software_update_list.lng deleted file mode 100644 index a462d90faa7dc79180330f9ebe69d176cdc5117d..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/tr_software_update_list.lng +++ /dev/null @@ -1,9 +0,0 @@ -<?php -$wb['list_head_txt'] = 'Yazılım Güncellemeleri'; -$wb['server_select_txt'] = 'Sunucu Seçin'; -$wb['installed_txt'] = 'Ä°ÅŸlem'; -$wb['update_title_txt'] = 'Güncelleme'; -$wb['version_txt'] = 'Sürüm'; -$wb['action_txt'] = 'Ä°ÅŸlem'; -$wb['no_updates_txt'] = 'Henüz bir güncelleme yok'; -?> diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng index 3bb9c82b0adc6f1eedd8420943fb451c0338ac72..b767101e22a67448d6d91d193b70c69f02da1450 100644 --- a/interface/web/admin/lib/lang/tr_system_config.lng +++ b/interface/web/admin/lib/lang/tr_system_config.lng @@ -24,11 +24,9 @@ $wb['ftpuser_prefix_error_regex'] = 'FTP kullanıcısı ön ekinde izin verilmey $wb['shelluser_prefix_error_regex'] = 'Kabuk kullanıcısı ön ekinde izin verilmeyen karakterler var'; $wb['webdavuser_prefix_error_regex'] = 'Webdav kullanıcısı ön ekinde izin verilmeyen karakterler var.'; $wb['dblist_phpmyadmin_link_txt'] = 'Veritabanı listesinde phpMyAdmin baÄŸlantısı'; +$wb['enable_welcome_mail_txt'] = 'Enable welcome email'; $wb['enable_custom_login_txt'] = 'Özel oturum açma kullanıcı adı kullanılabilsin'; $wb['mailboxlist_webmail_link_txt'] = 'E-posta kutusu listesinde Webmail baÄŸlantısı'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'E-posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'E-posta hesabı ayrıntılarında e-posta süzgeci sekmesi görüntülensin'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'E-posta hesabı ayrıntılarında isteÄŸe baÄŸlı e-posta süzgeci sekmesi görüntülensin'; $wb['webmail_url_txt'] = 'Webmail Adresi'; $wb['mailmailinglist_link_txt'] = 'E-posta Listeleri listesinde E-posta Listesi baÄŸlantısı'; $wb['mailmailinglist_url_txt'] = 'E-posta Listesi Adresi'; @@ -54,6 +52,7 @@ $wb['use_loadindicator_txt'] = 'Yük Göstergesi Kullanılsın'; $wb['f5_to_reload_js_txt'] = 'Bu deÄŸer deÄŸiÅŸtirildiÄŸinde, web tarayıcının JavaScript kitaplıklarını yeniden yüklemesi için F5 tuÅŸuna basmalı ya da web tarayıcının ön belleÄŸini temizlemelisiniz.'; $wb['client_username_web_check_disabled_txt'] = 'Müşteri kullanıcı adında \'web\' sözcüğü denetimi devre dışı bırakılsın.'; $wb['backups_include_into_web_quota_txt'] = 'Yedek dosyaları web kotasına katılsın.'; +$wb['show_per_domain_relay_options_txt'] = 'Show per domain relay options'; $wb['mailbox_show_autoresponder_tab_txt'] = 'E-posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin'; $wb['mailbox_show_mail_filter_tab_txt'] = 'E-posta hesabı ayrıntılarında e-posta süzgeci sekmesi görüntülensin'; $wb['mailbox_show_custom_rules_tab_txt'] = 'E-posta hesabı ayrıntılarında isteÄŸe baÄŸlı e-posta süzgeci sekmesi görüntülensin'; diff --git a/interface/web/admin/lib/module.conf.php b/interface/web/admin/lib/module.conf.php index 124656b7f302df41d02cd388e21354f7d9688fbb..59b2e1ffc170909c060f93a4db265f965e04a3e5 100644 --- a/interface/web/admin/lib/module.conf.php +++ b/interface/web/admin/lib/module.conf.php @@ -92,30 +92,6 @@ $module['nav'][] = array( 'title' => 'Interface', 'items' => $items); -// cleanup -unset($items); - - -$items[] = array( 'title' => 'Repositories', - 'target' => 'content', - 'link' => 'admin/software_repo_list.php', - 'html_id' => 'software_repo_list'); - -$items[] = array( 'title' => 'Packages', - 'target' => 'content', - 'link' => 'admin/software_package_list.php', - 'html_id' => 'software_package_list'); - -$items[] = array( 'title' => 'Updates', - 'target' => 'content', - 'link' => 'admin/software_update_list.php', - 'html_id' => 'software_update_list'); - -$module['nav'][] = array( 'title' => 'Software', - 'open' => 1, - 'items' => $items); - - // cleanup unset($items); diff --git a/interface/web/admin/lib/remote.conf.php b/interface/web/admin/lib/remote.conf.php index a1067a992f8c035e727355e503e517180430f540..9c2db8144e3da2b20a872f0fef78718f60ba45f7 100644 --- a/interface/web/admin/lib/remote.conf.php +++ b/interface/web/admin/lib/remote.conf.php @@ -3,4 +3,9 @@ $function_list['server_get,server_config_set,get_function_list,client_templates_get_all,server_get_serverid_by_ip,server_ip_get,server_ip_add,server_ip_update,server_ip_delete,system_config_set,system_config_get,config_value_get,config_value_add,config_value_update,config_value_replace,config_value_delete'] = 'Server functions'; $function_list['admin_record_permissions'] = 'Record permission changes'; +# Roundcube: generate list of actual soap methods used with: +# grep soap-\> /usr/share/roundcube/plugins/ispconfig3_*/ispconfig3_*.php | sed -e 's/^.*soap->//g' -e 's/(.*$//g' | sort -u | xargs | sed -e 's/ /,/g' +# +$function_list['client_get_id,login,logout,mail_alias_get,mail_fetchmail_add,mail_fetchmail_delete,mail_fetchmail_get,mail_fetchmail_update,mail_policy_get,mail_spamfilter_blacklist_add,mail_spamfilter_blacklist_delete,mail_spamfilter_blacklist_get,mail_spamfilter_blacklist_update,mail_spamfilter_user_add,mail_spamfilter_user_get,mail_spamfilter_user_update,mail_spamfilter_whitelist_add,mail_spamfilter_whitelist_delete,mail_spamfilter_whitelist_get,mail_spamfilter_whitelist_update,mail_user_filter_add,mail_user_filter_delete,mail_user_filter_get,mail_user_filter_update,mail_user_get,mail_user_update,server_get,server_get_app_version'] = 'Roundcube plugins functions'; + ?> diff --git a/interface/web/admin/list/software_repo.list.php b/interface/web/admin/list/software_repo.list.php deleted file mode 100644 index 0e172ace99ad7bf2bf53234922d2aa7432a90fb3..0000000000000000000000000000000000000000 --- a/interface/web/admin/list/software_repo.list.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php - -/* - Datatypes: - - INTEGER - - DOUBLE - - CURRENCY - - VARCHAR - - TEXT - - DATE -*/ - - - -// Name of the list -$liste["name"] = "software_repo"; - -// Database table -$liste["table"] = "software_repo"; - -// Index index field of the database table -$liste["table_idx"] = "software_repo_id"; - -// Search Field Prefix -$liste["search_prefix"] = "search_"; - -// Records per page -$liste["records_per_page"] = "15"; - -// Script File of the list -$liste["file"] = "software_repo_list.php"; - -// Script file of the edit form -$liste["edit_file"] = "software_repo_edit.php"; - -// Script File of the delete script -$liste["delete_file"] = "software_repo_del.php"; - -// Paging Template -$liste["paging_tpl"] = "templates/paging.tpl.htm"; - -// Enable auth -$liste["auth"] = "yes"; - - -/***************************************************** -* Suchfelder -*****************************************************/ - -$liste["item"][] = array( 'field' => "active", - 'datatype' => "VARCHAR", - 'formtype' => "SELECT", - 'op' => "=", - 'prefix' => "", - 'suffix' => "", - 'width' => "", - 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); - -$liste["item"][] = array( 'field' => "repo_name", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - - -$liste["item"][] = array( 'field' => "repo_url", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - -?> diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php index 339ac2f2f5605d9b6ad0ccb2d2d462113aee3b4f..1fd1921b84e38562f1b756426c63bddf801430a3 100644 --- a/interface/web/admin/server_config_edit.php +++ b/interface/web/admin/server_config_edit.php @@ -57,7 +57,7 @@ class page_action extends tform_actions { // get the config $app->uses('getconf'); - $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); + $web_config = $app->getconf->get_server_config($this->id, 'web'); if($web_config['server_type'] == 'nginx'){ unset($app->tform->formDef["tabs"]["fastcgi"]); @@ -90,8 +90,12 @@ class page_action extends tform_actions { $this->dataRecord = $app->getconf->get_server_config($server_id, $section); if($section == 'mail'){ - $server_config = $app->getconf->get_server_config($server_id, 'server'); - $rspamd_url = 'https://'.$server_config['hostname'].':8081/rspamd/'; + if(trim($this->dataRecord['rspamd_url'] == '')) { + $server_config = $app->getconf->get_server_config($server_id, 'server'); + $rspamd_url = 'https://'.$server_config['hostname'].':8081/rspamd/'; + } else { + $rspamd_url = $this->dataRecord['rspamd_url']; + } } } diff --git a/interface/web/admin/software_package_edit.php b/interface/web/admin/software_package_edit.php deleted file mode 100644 index 65555d3a3570d12fce552171a1df350201902c75..0000000000000000000000000000000000000000 --- a/interface/web/admin/software_package_edit.php +++ /dev/null @@ -1,60 +0,0 @@ -<?php -/* -Copyright (c) 2008, Till Brehm, projektfarm Gmbh -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/****************************************** -* Begin Form configuration -******************************************/ - -$tform_def_file = "form/software_package.tform.php"; - -/****************************************** -* End Form configuration -******************************************/ - -require_once '../../lib/config.inc.php'; -require_once '../../lib/app.inc.php'; - -//* Check permissions for module -$app->auth->check_module_permissions('admin'); -$app->auth->check_security_permissions('admin_allow_software_packages'); -if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); - -// Loading classes -$app->uses('tpl,tform,tform_actions'); -$app->load('tform_actions'); - -class page_action extends tform_actions { - -} - -$page = new page_action; -$page->onLoad(); - -?> diff --git a/interface/web/admin/software_package_install.php b/interface/web/admin/software_package_install.php deleted file mode 100644 index 6a5326d51a1bed56d1d1b2faf862d8aa38533f3d..0000000000000000000000000000000000000000 --- a/interface/web/admin/software_package_install.php +++ /dev/null @@ -1,179 +0,0 @@ -<?php - -/* -Copyright (c) 2010, Till Brehm, projektfarm Gmbh -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -require_once '../../lib/config.inc.php'; -require_once '../../lib/app.inc.php'; - -//* Check permissions for module -$app->auth->check_module_permissions('admin'); -$app->auth->check_security_permissions('admin_allow_software_packages'); - -//* This is only allowed for administrators -if(!$app->auth->is_admin()) die('only allowed for administrators.'); - -// Check CSRF Token -if(count($_POST) > 0) { - $app->auth->csrf_token_check('POST'); -} else { - $app->auth->csrf_token_check('GET'); -} - -$package_name = $_REQUEST['package']; -$install_server_id = $app->functions->intval($_REQUEST['server_id']); -$install_key = trim($_REQUEST['install_key']); - -$package = $app->db->queryOneRecord("SELECT * FROM software_package WHERE package_name = ?", $package_name); - -$install_key_verified = false; -$message_err = ''; -$message_ok = ''; - -//* verify the key -if($package['package_installable'] == 'key' && $install_key != '') { - - $repo = $app->db->queryOneRecord("SELECT * FROM software_repo WHERE software_repo_id = ?", $package['software_repo_id']); - - $client = new SoapClient(null, array('location' => $repo['repo_url'], - 'uri' => $repo['repo_url'])); - - $install_key_verified = $client->check_installable($package_name, $install_key, $repo['repo_username'], $repo['repo_password']); - - if($install_key_verified == false) { - //$install_key = ''; - $message_err = 'Verification of the key failed.'; - } else { - // Store the verified key into the database - $app->db->datalogUpdate('software_package', array("package_key" => $install_key), 'package_id', $package['package_id']); - } -} else { - $message_ok = 'Please enter the software key for the package.'; -} - -//* Install packages, if all requirements are fullfilled. -if($install_server_id > 0 && $package_name != '' && ($package['package_installable'] == 'yes' || $install_key_verified == true)) { - $sql = "SELECT software_update_id, package_name, update_title FROM software_update WHERE type = 'full' AND package_name = ? ORDER BY v1 DESC, v2 DESC, v3 DESC, v4 DESC LIMIT 0,1"; - $tmp = $app->db->queryOneRecord($sql, $package_name); - $software_update_id = $tmp['software_update_id']; - - //* if package requires a DB and there is no data for a db in config, then we create this data now - if($package['package_requires_db'] == 'mysql') { - $app->uses('ini_parser,getconf'); - - $package_config_array = array(); - if(trim($package['package_config']) != '') { - $package_config_array = $app->ini_parser->parse_ini_string(stripslashes($package['package_config'])); - } - - if(!isset($package_config_array['mysql'])) { - $package_config_array['mysql'] = array( 'database_name' => 'ispapp'.$package['package_id'], - 'database_user' => 'ispapp'.$package['package_id'], - 'database_password' => md5(mt_rand()), - 'database_host' => 'localhost'); - $package_config_str = $app->ini_parser->get_ini_string($package_config_array); - $package['package_config'] = $package_config_str; - $app->db->datalogUpdate('software_package', array("package_config" => $package_config_str), 'package_id', $package['package_id']); - } - } - - //* If the packages requires a remote user - if($package['package_remote_functions'] != '') { - - if(trim($package['package_config']) != '') { - $package_config_array = $app->ini_parser->parse_ini_string(stripslashes($package['package_config'])); - } - - if(!isset($package_config_array['remote_api'])) { - $remote_user = 'ispapp'.$package['package_id']; - $remote_password = md5(mt_rand()); - $remote_functions = $package['package_remote_functions']; - - $package_config_array['remote_api'] = array( - 'remote_hostname' => $_SERVER['HTTP_HOST'], - 'remote_user' => $remote_user, - 'remote_password' => $remote_password - ); - - $package_config_str = $app->ini_parser->get_ini_string($package_config_array); - $package['package_config'] = $package_config_str; - $remote_password_md5 = md5($remote_password); - $app->db->datalogUpdate('software_package', array("package_config" => $package_config_str), 'package_id', $package['package_id']); - - $sql = "INSERT INTO `remote_user` (`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `remote_username`, `remote_password`, `remote_functions`) VALUES - (1, 1, 'riud', 'riud', '', ?, ?, ?)"; - $app->db->query($sql, $remote_user, $remote_password_md5, $remote_functions); - - } - - } - - //* Add the record to start the install process - $insert_data = array( - "package_name" => $package_name, - "server_id" => $install_server_id, - "software_update_id" => $software_update_id, - "status" => 'installing' - ); - $app->db->datalogInsert('software_update_inst', $insert_data, 'software_update_inst_id'); - $message_ok = 'Starting package installation '."<a href=\"#\" onclick=\"ISPConfig.submitForm('pageForm','admin/software_package_list.php');\">".$app->lng('next')."</a>"; - -} - -if(count($_POST) > 2 && $install_key == '') { - $message_ok = 'Please enter the software key.'; -} - -//* Show key input form -if($package['package_installable'] == 'key' && !$install_key_verified) { - $insert_key = true; -} else { - $insert_key = false; -} - -// Loading the template -$app->uses('tpl'); -$app->tpl->newTemplate("form.tpl.htm"); -$app->tpl->setInclude('content_tpl', 'templates/software_package_install.htm'); - -$app->tpl->setVar('message_ok', $message_ok); -$app->tpl->setVar('message_err', $message_err); -$app->tpl->setVar('insert_key', $insert_key); -$app->tpl->setVar('install_key', $install_key); -$app->tpl->setVar('package_name', $package_name); -$app->tpl->setVar('server_id', $install_server_id); - - -include_once 'lib/lang/en_software_package_install.lng'; -$app->tpl->setVar($wb); - - -$app->tpl_defaults(); -$app->tpl->pparse(); - -?> diff --git a/interface/web/admin/software_package_list.php b/interface/web/admin/software_package_list.php deleted file mode 100644 index 8a21696c7f398600ba7083b3f95d3e8f548de825..0000000000000000000000000000000000000000 --- a/interface/web/admin/software_package_list.php +++ /dev/null @@ -1,200 +0,0 @@ -<?php - -/* -Copyright (c) 2008, Till Brehm, projektfarm Gmbh -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -require_once '../../lib/config.inc.php'; -require_once '../../lib/app.inc.php'; - -//* Check permissions for module -$app->auth->check_module_permissions('admin'); - -//* This is only allowed for administrators -if(!$app->auth->is_admin()) die('only allowed for administrators.'); - -//* Get the latest packages from the repositorys and insert them in the local database -$packages_added = 0; -$repos = $app->db->queryAllRecords("SELECT software_repo_id, repo_url, repo_username, repo_password FROM software_repo WHERE active = 'y'"); -if(is_array($repos) && isset($_GET['action']) && $_GET['action'] == 'repoupdate' ) { - foreach($repos as $repo) { - $client = new SoapClient(null, array('location' => $repo['repo_url'], - 'uri' => $repo['repo_url'])); - - $packages = $client->get_packages($repo['repo_username'], $repo['repo_password']); - if(is_array($packages)) { - foreach($packages as $p) { - $package_name = $p['name']; - $tmp = $app->db->queryOneRecord("SELECT package_id FROM software_package WHERE package_name = ?", $package_name); - - $package_title = $p['title']; - $package_description = $p['description']; - $software_repo_id = $app->functions->intval($repo['software_repo_id']); - $package_type = $p['type']; - $package_installable = $p['installable']; - $package_requires_db = $p['requires_db']; - $package_remote_functions = $p['remote_functions']; - - if(empty($tmp['package_id'])) { - $insert_data = array( - "software_repo_id" => $software_repo_id, - "package_name" => $package_name, - "package_title" => $package_title, - "package_description" => $package_description, - "package_type" => $package_type, - "package_installable" => $package_installable, - "package_requires_db" => $package_requires_db, - "package_remote_functions" => $package_remote_functions - ); - $app->db->datalogInsert('software_package', $insert_data, 'package_id'); - $packages_added++; - } else { - $update_data = array( - "software_repo_id" => $software_repo_id, - "package_title" => $package_title, - "package_description" => $package_description, - "package_type" => $package_type, - "package_installable" => $package_installable, - "package_requires_db" => $package_requires_db, - "package_remote_functions" => $package_remote_functions - ); - //echo $update_data; - $app->db->datalogUpdate('software_package', $update_data, 'package_id', $tmp['package_id']); - } - } - } - - $packages = $app->db->queryAllRecords("SELECT software_package.package_name, v1, v2, v3, v4 FROM software_package LEFT JOIN software_update ON ( software_package.package_name = software_update.package_name ) GROUP BY package_name ORDER BY v1 DESC , v2 DESC , v3 DESC , v4 DESC"); - if(is_array($packages)) { - foreach($packages as $p) { - - $version = $p['v1'].'.'.$p['v2'].'.'.$p['v3'].'.'.$p['v4']; - $updates = $client->get_updates($p['package_name'], $version, $repo['repo_username'], $repo['repo_password']); - - if(is_array($updates)) { - foreach($updates as $u) { - - $version_array = explode('.', $u['version']); - $v1 = $app->functions->intval($version_array[0]); - $v2 = $app->functions->intval($version_array[1]); - $v3 = $app->functions->intval($version_array[2]); - $v4 = $app->functions->intval($version_array[3]); - - $package_name = $u['package_name']; - $software_repo_id = $app->functions->intval($repo['software_repo_id']); - $update_url = $u['url']; - $update_md5 = $u['md5']; - $update_dependencies = (isset($u['dependencies']))?$u['dependencies']:''; - $update_title = $u['title']; - $type = $u['type']; - - // Check that we do not have this update in the database yet - $sql = "SELECT * FROM software_update WHERE package_name = ? and v1 = ? and v2 = ? and v3 = ? and v4 = ?"; - $tmp = $app->db->queryOneRecord($sql, $package_name, $v1, $v2, $v3, $v4); - if(!isset($tmp['software_update_id'])) { - $insert_data = array( - "software_repo_id" => $software_repo_id, - "package_name" => $package_name, - "update_url" => $update_url, - "update_md5" => $update_md5, - "update_dependencies" => $update_dependencies, - "update_title" => $update_title, - "v1" => $v1, - "v2" => $v2, - "v3" => $v3, - "v4" => $v4, - "type" => $type - ); - $app->db->datalogInsert('software_update', $insert_data, 'software_update_id'); - } - - } - } - } - } - } -} - -// Show the list in the interface -// Loading the template -$app->uses('tpl'); -$app->tpl->newTemplate("form.tpl.htm"); -$app->tpl->setInclude('content_tpl', 'templates/software_package_list.htm'); - -$csrf_token = $app->auth->csrf_token_get('software_package_list'); -$_csrf_id = $csrf_token['csrf_id']; -$_csrf_key = $csrf_token['csrf_key']; - -$servers = $app->db->queryAllRecords('SELECT server_id, server_name FROM server ORDER BY server_name'); -$packages = $app->db->queryAllRecords('SELECT * FROM software_package'); -if(is_array($packages) && count($packages) > 0) { - foreach($packages as $key => $p) { - $installed_txt = ''; - foreach($servers as $s) { - $inst = $app->db->queryOneRecord("SELECT * FROM software_update, software_update_inst WHERE software_update_inst.software_update_id = software_update.software_update_id AND software_update_inst.package_name = ? AND server_id = ?", $p["package_name"], $s["server_id"]); - $version = $inst['v1'].'.'.$inst['v2'].'.'.$inst['v3'].'.'.$inst['v4']; - - if($inst['status'] == 'installed') { - $installed_txt .= $s['server_name'].": ".$app->lng("Installed version $version")."<br />"; - } elseif ($inst['status'] == 'installing') { - $installed_txt .= $s['server_name'].": ".$app->lng("Installation in progress")."<br />"; - } elseif ($inst['status'] == 'failed') { - $installed_txt .= $s['server_name'].": ".$app->lng("Installation failed")."<br />"; - } elseif ($inst['status'] == 'deleting') { - $installed_txt .= $s['server_name'].": ".$app->lng("Deletion in progress")."<br />"; - } else { - if($p['package_installable'] == 'no') { - $installed_txt .= $s['server_name'].": ".$app->lng("Package can not be installed.")."<br />"; - } else { - $installed_txt .= $s['server_name'].": <a href=\"#\" data-load-content=\"admin/software_package_install.php?package=".$p["package_name"]."&server_id=".$s["server_id"]."&_csrf_key=".$_csrf_key."&_csrf_id=".$_csrf_id."\">Install now</a><br />"; - } - } - } - $packages[$key]['software_update_inst_id'] = intval($inst['software_update_inst_id']); - $packages[$key]['installed'] = $installed_txt; - $packages[$key]['csrf_id'] = $_csrf_id; - $packages[$key]['csrf_key'] = $_csrf_key; - } - $app->tpl->setVar('has_packages', 1); -} else { - $app->tpl->setVar('has_packages', 0); -} - - - -$app->tpl->setLoop('records', $packages); - -$language = (isset($_SESSION['s']['language']))?$_SESSION['s']['language']:$conf['language']; -include_once 'lib/lang/'.$app->functions->check_language($language).'_software_package_list.lng'; -$app->tpl->setVar($wb); - - -$app->tpl_defaults(); -$app->tpl->pparse(); - - -?> diff --git a/interface/web/admin/software_repo_del.php b/interface/web/admin/software_repo_del.php deleted file mode 100644 index 630993717ce6dd20e3e77804bbf4497e6b6c0f2e..0000000000000000000000000000000000000000 --- a/interface/web/admin/software_repo_del.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php - -/* -Copyright (c) 2008, Till Brehm, projektfarm Gmbh -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/****************************************** -* Begin Form configuration -******************************************/ - -$list_def_file = "list/software_repo.list.php"; -$tform_def_file = "form/software_repo.tform.php"; - -/****************************************** -* End Form configuration -******************************************/ - -require_once '../../lib/config.inc.php'; -require_once '../../lib/app.inc.php'; - -//* Check permissions for module -$app->auth->check_module_permissions('admin'); -$app->auth->check_security_permissions('admin_allow_software_repo'); -if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); - -$app->uses("tform_actions"); -$app->tform_actions->onDelete(); - -?> diff --git a/interface/web/admin/software_repo_edit.php b/interface/web/admin/software_repo_edit.php deleted file mode 100644 index 6d52da2b56799f0274239b42bba857bd4388ec8b..0000000000000000000000000000000000000000 --- a/interface/web/admin/software_repo_edit.php +++ /dev/null @@ -1,60 +0,0 @@ -<?php -/* -Copyright (c) 2008, Till Brehm, projektfarm Gmbh -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/****************************************** -* Begin Form configuration -******************************************/ - -$tform_def_file = "form/software_repo.tform.php"; - -/****************************************** -* End Form configuration -******************************************/ - -require_once '../../lib/config.inc.php'; -require_once '../../lib/app.inc.php'; - -//* Check permissions for module -$app->auth->check_module_permissions('admin'); -$app->auth->check_security_permissions('admin_allow_software_repo'); -if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); - -// Loading classes -$app->uses('tpl,tform,tform_actions'); -$app->load('tform_actions'); - -class page_action extends tform_actions { - -} - -$page = new page_action; -$page->onLoad(); - -?> diff --git a/interface/web/admin/software_repo_list.php b/interface/web/admin/software_repo_list.php deleted file mode 100644 index b8afc8f9bc8f6bde874e87e75feb42e93587bd6f..0000000000000000000000000000000000000000 --- a/interface/web/admin/software_repo_list.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - -/* -Copyright (c) 2008, Till Brehm, projektfarm Gmbh -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -require_once '../../lib/config.inc.php'; -require_once '../../lib/app.inc.php'; - -/****************************************** -* Begin Form configuration -******************************************/ - -$list_def_file = "list/software_repo.list.php"; - -/****************************************** -* End Form configuration -******************************************/ - -//* Check permissions for module -$app->auth->check_module_permissions('admin'); - -$app->uses('listform_actions'); - -$app->listform_actions->onLoad(); - - -?> diff --git a/interface/web/admin/software_update_list.php b/interface/web/admin/software_update_list.php deleted file mode 100644 index 6d680c0ec1ce613db0e448866dbd0036a30c78fa..0000000000000000000000000000000000000000 --- a/interface/web/admin/software_update_list.php +++ /dev/null @@ -1,204 +0,0 @@ -<?php - -/* -Copyright (c) 2008, Till Brehm, projektfarm Gmbh -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -require_once '../../lib/config.inc.php'; -require_once '../../lib/app.inc.php'; - -//* Check permissions for module -$app->auth->check_module_permissions('admin'); -$app->auth->check_security_permissions('admin_allow_software_packages'); - -//* This is only allowed for administrators -if(!$app->auth->is_admin()) die('only allowed for administrators.'); - -//* Get the latest updates from the repositorys and insert them in the local database -$updates_added = 0; -$repos = $app->db->queryAllRecords("SELECT software_repo_id, repo_url, repo_username, repo_password FROM software_repo WHERE active = 'y'"); -if(is_array($repos)) { - foreach($repos as $repo) { - - /* - SELECT software_package.package_name, v1, v2, v3, v4 - FROM software_package - LEFT JOIN software_update ON ( software_package.package_name = software_update.package_name ) - LEFT JOIN software_update_inst ON ( software_update.software_update_id = software_update_inst.software_update_id ) - GROUP BY package_name - ORDER BY v1 DESC , v2 DESC , v3 DESC , v4 DESC - */ - - $client = new SoapClient(null, array('location' => $repo['repo_url'], - 'uri' => $repo['repo_url'])); - - $packages = $app->db->queryAllRecords("SELECT software_package.package_name, v1, v2, v3, v4 FROM software_package LEFT JOIN software_update ON ( software_package.package_name = software_update.package_name ) GROUP BY package_name ORDER BY v1 DESC , v2 DESC , v3 DESC , v4 DESC"); - if(is_array($packages)) { - foreach($packages as $p) { - - $version = $p['v1'].'.'.$p['v2'].'.'.$p['v3'].'.'.$p['v4']; - $updates = $client->get_updates($p['package_name'], $version, $repo['repo_username'], $repo['repo_password']); - - if(is_array($updates)) { - foreach($updates as $u) { - - $version_array = explode('.', $u['version']); - $v1 = $app->functions->intval($version_array[0]); - $v2 = $app->functions->intval($version_array[1]); - $v3 = $app->functions->intval($version_array[2]); - $v4 = $app->functions->intval($version_array[3]); - - $package_name = $u['package_name']; - $software_repo_id = $app->functions->intval($repo['software_repo_id']); - $update_url = $u['url']; - $update_md5 = $u['md5']; - $update_dependencies = (isset($u['dependencies']))?$u['dependencies']:''; - $update_title = $u['title']; - $type = $u['type']; - - // Check that we do not have this update in the database yet - $sql = "SELECT * FROM software_update WHERE package_name = ? and v1 = ? and v2 = ? and v3 = ? and v4 = ?"; - $tmp = $app->db->queryOneRecord($sql, $package_name, $v1, $v2, $v3, $v4); - if(!isset($tmp['software_update_id'])) { - // Insert the update in the datbase - $sql = "INSERT INTO software_update (software_repo_id, package_name, update_url, update_md5, update_dependencies, update_title, v1, v2, v3, v4, type) - VALUES ($software_repo_id, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; - //die($sql); - $app->db->query($sql, $package_name, $update_url, $update_md5, $update_dependencies, $update_title, $v1, $v2, $v3, $v4, $type); - } - - } - } - } - } - } -} - - -//* Install packages, if GET Request -if(isset($_GET['action']) && $_GET['action'] == 'install' && $_GET['package'] != '' && $_GET['server_id'] > 0) { - $package_name = $_GET['package']; - $server_id = $app->functions->intval($_GET['server_id']); - $software_update_id = $app->functions->intval($_GET['id']); - - $insert_data = array( - "package_name" => $package_name, - "server_id" => $server_id, - "software_update_id" => $software_update_id, - "status" => 'installing' - ); - $app->db->datalogInsert('software_update_inst', $insert_data, 'software_update_inst_id'); - -} - - - -// Show the list in the interface -// Loading the template -$app->uses('tpl'); -$app->tpl->newTemplate("form.tpl.htm"); -$app->tpl->setInclude('content_tpl', 'templates/software_update_list.htm'); - -/* -SELECT software_package.package_name, software_package.package_title, software_update.update_title, v1, v2, v3, v4, software_update_inst.status - FROM software_package - LEFT JOIN software_update ON ( software_package.package_name = software_update.package_name ) - LEFT JOIN software_update_inst ON ( software_update.software_update_id = software_update_inst.software_update_id ) -GROUP BY software_update.software_update_id - ORDER BY v1 DESC , v2 DESC , v3 DESC , v4 DESC -*/ - - - -if(isset($_POST["server_id"]) && $_POST["server_id"] > 0) { - $server_id = $app->functions->intval($_POST["server_id"]); -} else { - $server_id = 1; -} - -$servers = $app->db->queryAllRecords('SELECT server_id, server_name FROM server ORDER BY server_name'); -foreach($servers as $key => $server) { - if($server['server_id'] == $server_id) { - $servers[$key]['selected'] = 'selected'; - } else { - $servers[$key]['selected'] = ''; - } -} - -$app->tpl->setLoop('servers', $servers); - -$sql = "SELECT v1, v2, v3, v4, software_update.update_title, software_update.software_update_id, software_update.package_name, v1, v2, v3, v4, software_update_inst.status - FROM software_update LEFT JOIN software_update_inst ON ( software_update.software_update_id = software_update_inst.software_update_id ) - WHERE server_id = $server_id - GROUP BY software_update.package_name - ORDER BY software_update.package_name ASC, v1 DESC , v2 DESC , v3 DESC , v4 DESC"; - -$installed_packages = $app->db->queryAllRecords($sql); - - -$records_out = array(); - -if(is_array($installed_packages)) { - foreach($installed_packages as $ip) { - - // Get version number of the latest installed version - $sql = "SELECT v1, v2, v3, v4 FROM software_update, software_update_inst WHERE software_update.software_update_id = software_update_inst.software_update_id AND server_id = ? ORDER BY v1 DESC , v2 DESC , v3 DESC , v4 DESC LIMIT 0,1"; - $lu = $app->db->queryOneRecord($sql, $server_id); - - // Get all installable updates - $sql = "SELECT * FROM software_update WHERE v1 >= ? AND v2 >= ? AND v3 >= ? AND v4 >= ? AND package_name = ? ORDER BY v1 DESC , v2 DESC , v3 DESC , v4 DESC"; - $updates = $app->db->queryAllRecords($sql, $lu['v1'], $lu['v2'], $lu['v3'], $lu['v4'], $ip['package_name']); - //die($sql); - - if(is_array($updates)) { - // Delete the last record as it is already installed - unset($updates[count($updates)-1]); - - foreach($updates as $key => $u) { - $version = $u['v1'].'.'.$u['v2'].'.'.$u['v3'].'.'.$u['v4']; - $installed_txt = "<a href=\"#\" data-load-content=\"admin/software_update_list.php?action=install&package=".$u["package_name"]."&id=".$u["software_update_id"]."&server_id=".$server_id."\">Install Update</a><br />"; - $records_out[] = array('version' => $version, 'update_title' => $u["update_title"], 'installed' => $installed_txt); - - } - } - } -} - - - -$app->tpl->setLoop('records', $records_out); - -$language = (isset($_SESSION['s']['language']))?$_SESSION['s']['language']:$conf['language']; -include_once 'lib/lang/'.$app->functions->check_language($language).'_software_update_list.lng'; -$app->tpl->setVar($wb); - - -$app->tpl_defaults(); -$app->tpl->pparse(); - - -?> diff --git a/interface/web/admin/templates/server_config_mail_edit.htm b/interface/web/admin/templates/server_config_mail_edit.htm index c26cff24ba8b1fa0bdea00722a398437fd00fb08..0eac9889610954e97e4a5575eb7dc4a543e5e0f6 100644 --- a/interface/web/admin/templates/server_config_mail_edit.htm +++ b/interface/web/admin/templates/server_config_mail_edit.htm @@ -49,12 +49,38 @@ </div> <div class="form-group rspamd"> <label for="rspamd_url" class="col-sm-3 control-label col-text">{tmpl_var name='rspamd_url_txt'}</label> - <div class="col-sm-6"><a href="{tmpl_var name='rspamd_url'}" target="_blank">{tmpl_var name='rspamd_url'}</a><a href="{tmpl_var name='rspamd_url'}" target="_blank" class="btn btn-default formbutton-default formbutton-narrow" style="margin-left:20px"><span class="icon icon-link"></span></a></div> + <div class="col-sm-8"><div class="input-group"> + <input type="text" name="rspamd_url" id="rspamd_url" value="{tmpl_var name='rspamd_url'}" class="form-control" /> + <span class="input-group-btn"> + <a href="{tmpl_var name='rspamd_url'}" target="_blank" class="btn btn-default formbutton-default formbutton-narrow" style="margin-left:20px"><span class="icon icon-link"></span></a> + </span> + </div></div> + </div> </div> <div class="form-group rspamd"> <label for="rspamd_password" class="col-sm-3 control-label">{tmpl_var name='rspamd_password_txt'}</label> <div class="col-sm-9"><input type="text" name="rspamd_password" id="rspamd_password" value="{tmpl_var name='rspamd_password'}" class="form-control" /></div> </div> + <div class="form-group rspamd"> + <label for="rspamd_redis_servers" class="col-sm-3 control-label">{tmpl_var name='rspamd_redis_servers_txt'}</label> + <div class="col-sm-9" data-toggle="tooltip" title="{tmpl_var name='tooltip_rspamd_redis_servers_txt'}"> + <input type="text" name="rspamd_redis_servers" id="rspamd_redis_servers" value="{tmpl_var name='rspamd_redis_servers'}" class="form-control" /></div> + </div> + <div class="form-group rspamd"> + <label for="rspamd_redis_password" class="col-sm-3 control-label">{tmpl_var name='rspamd_redis_password_txt'}</label> + <div class="col-sm-9" data-toggle="tooltip" title="{tmpl_var name='tooltip_rspamd_redis_password_txt'}"> + <input type="text" name="rspamd_redis_password" id="rspamd_redis_password" value="{tmpl_var name='rspamd_redis_password'}" class="form-control" /></div> + </div> + <div class="form-group rspamd"> + <label for="rspamd_redis_bayes_servers" class="col-sm-3 control-label">{tmpl_var name='rspamd_redis_bayes_servers_txt'}</label> + <div class="col-sm-9" data-toggle="tooltip" title="{tmpl_var name='tooltip_rspamd_redis_bayes_servers_txt'}"> + <input type="text" name="rspamd_redis_bayes_servers" id="rspamd_redis_bayes_servers" value="{tmpl_var name='rspamd_redis_bayes_servers'}" class="form-control" /></div> + </div> + <div class="form-group rspamd"> + <label for="rspamd_redis_bayes_password" class="col-sm-3 control-label">{tmpl_var name='rspamd_redis_bayes_password_txt'}</label> + <div class="col-sm-9" data-toggle="tooltip" title="{tmpl_var name='tooltip_rspamd_redis_bayes_password_txt'}"> + <input type="text" name="rspamd_redis_bayes_password" id="rspamd_redis_bayes_password" value="{tmpl_var name='rspamd_redis_bayes_password'}" class="form-control" /></div> + </div> <div class="form-group"> <label for="mailuser_uid" class="col-sm-3 control-label">{tmpl_var name='mailuser_uid_txt'}</label> <div class="col-sm-9"><input type="text" name="mailuser_uid" id="mailuser_uid" value="{tmpl_var name='mailuser_uid'}" class="form-control" /></div></div> diff --git a/interface/web/admin/templates/server_php_fpm_edit.htm b/interface/web/admin/templates/server_php_fpm_edit.htm index 5e4cae9ac51d34a5bf609752b61ffe497f17c7c6..c3369f1fdb2a94224ef4b73ddaf02c3d1b8948c3 100644 --- a/interface/web/admin/templates/server_php_fpm_edit.htm +++ b/interface/web/admin/templates/server_php_fpm_edit.htm @@ -8,12 +8,12 @@ <label for="php_fpm_pool_dir" class="col-sm-3 control-label">{tmpl_var name='php_fpm_pool_dir_txt'}</label> <div class="col-sm-9"><input type="text" name="php_fpm_pool_dir" id="php_fpm_pool_dir" value="{tmpl_var name='php_fpm_pool_dir'}" class="form-control" /></div></div> <div class="form-group"> - <label for="php_fpm_socket_dir" class="col-sm-3 control-label">{tmpl_var name='php_fpm_socket_dir'}</label> + <label for="php_fpm_socket_dir" class="col-sm-3 control-label">{tmpl_var name='php_fpm_socket_dir_txt'}</label> <div class="col-sm-9"><input type="text" name="php_fpm_socket_dir" id="php_fpm_socket_dir" value="{tmpl_var name='php_fpm_socket_dir'}" class="form-control" /></div></div> - - + + <input type="hidden" name="id" value="{tmpl_var name='id'}"> - + <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/server_php_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/server_php_list.php">{tmpl_var name='btn_cancel_txt'}</button> diff --git a/interface/web/admin/templates/software_package_edit.htm b/interface/web/admin/templates/software_package_edit.htm deleted file mode 100644 index 2569c267f0d55b6dc967118bc03e79ff8ae15c44..0000000000000000000000000000000000000000 --- a/interface/web/admin/templates/software_package_edit.htm +++ /dev/null @@ -1,22 +0,0 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - - <div class="form-group"> - <label for="package_title" class="col-sm-3 control-label">{tmpl_var name='package_title_txt'}</label> - {tmpl_var name='package_title'}<input name="package_title" id="package_title" value="{tmpl_var name='package_title'}" size="40" maxlength="40" type="hidden" class="textInput" /> - </div> - <div class="form-group"> - <label for="package_key" class="col-sm-3 control-label">{tmpl_var name='package_key_txt'}</label> - <div class="col-sm-9"><input type="text" name="package_key" id="package_key" value="{tmpl_var name='package_key'}" class="form-control" /></div></div> - - - <input type="hidden" name="id" value="{tmpl_var name='id'}"> - - <div class="clear"><div class="right"> - <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/software_package_edit.php">{tmpl_var name='btn_save_txt'}</button> - <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/software_package_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file diff --git a/interface/web/admin/templates/software_package_install.htm b/interface/web/admin/templates/software_package_install.htm deleted file mode 100644 index 8524b3c08755982c38b050d12e8b45ee1d955d72..0000000000000000000000000000000000000000 --- a/interface/web/admin/templates/software_package_install.htm +++ /dev/null @@ -1,31 +0,0 @@ -<div class='page-header'> - <h1><tmpl_var name="head_txt"></h1> -</div> -<p><tmpl_var name="desc_txt"></p> - -<div class="panel panel_software_repo"> - <tmpl_if name="message_err"> - <div id="errorMsg"><tmpl_var name="message_err"></div> - </tmpl_if> - <tmpl_if name="message_ok"> - <div id="OKMsg"><tmpl_var name="message_ok"></div> - </tmpl_if> - <tmpl_if name="insert_key"> - <div class="pnl_formsarea"> - - <p> </p> - <div class="form-group"> - <label for="install_key" class="col-sm-3 control-label">{tmpl_var name='install_key_txt'}</label> - <div class="col-sm-9"><input type="text" name="install_key" id="install_key" value="{tmpl_var name='install_key'}" class="form-control" /></div></div> - - <input type="hidden" name="package" value="{tmpl_var name='package_name'}"> - <input type="hidden" name="server_id" value="{tmpl_var name='server_id'}"> - <p> </p> - <div class="clear"><div class="right"> - <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/software_package_install.php">{tmpl_var name='btn_save_txt'}</button> - <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/software_package_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> - - </div> - </tmpl_if> -</div> \ No newline at end of file diff --git a/interface/web/admin/templates/software_package_list.htm b/interface/web/admin/templates/software_package_list.htm deleted file mode 100644 index e69e3780af4e3ccff25906c9a5867f46b8b19f5c..0000000000000000000000000000000000000000 --- a/interface/web/admin/templates/software_package_list.htm +++ /dev/null @@ -1,55 +0,0 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <p class="fieldset-legend">{tmpl_var name="toolsarea_head_txt"}</p> - - <button class="btn btn-default formbutton-success" type="button" data-load-content="admin/software_package_list.php?action=repoupdate">{tmpl_var name="repoupdate_txt"}</button> - - - - - <p class="fieldset-legend"><tmpl_var name="list_head_txt"></p> - <div class="table-wrapper marginTop15"> -<table class="table"> - <thead class="dark form-group-sm"> - <tr> - <th data-column="installed"><tmpl_var name="installed_txt"></th> - <th data-column="package_title"><tmpl_var name="package_title_txt"></th> - <th data-column="package_description"><tmpl_var name="package_description_txt"></th> - <th data-column="package_id"><tmpl_var name="package_id_txt"></th> - <th class="small-col text-right">{tmpl_var name='search_limit'}</th> - </tr> - </thead> - <tbody> - <tmpl_loop name="records"> - <tmpl_if name="has_packages"> - <tr> - <td>{tmpl_var name="installed"}</td> - <td>{tmpl_var name="package_title"}</td> - <td>{tmpl_var name="package_description"}</td> - <td>ispapp{tmpl_var name="package_id"}</td> - <td class="text-right"> - <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="admin/software_package_edit.php?id={tmpl_var name='package_id'}"><span class="icon icon-edit"></span></a> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/software_package_del.php?software_update_inst_id={tmpl_var name='software_update_inst_id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> - </td> - </tr> - </tmpl_if> - </tmpl_loop> - <tmpl_unless name="records"> - <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"> - <td colspan="5">{tmpl_var name='no_packages_txt'}</td> - </tr> - </tmpl_unless> - </tbody> - <tfoot> - <tr> - <td colspan="5"></td> - </tr> - </tfoot> - </table> -</div> - - \ No newline at end of file diff --git a/interface/web/admin/templates/software_repo_edit.htm b/interface/web/admin/templates/software_repo_edit.htm deleted file mode 100644 index a43ea74900dddbd01d8091792acddadf45a15764..0000000000000000000000000000000000000000 --- a/interface/web/admin/templates/software_repo_edit.htm +++ /dev/null @@ -1,26 +0,0 @@ - <div class="form-group"> - <label for="repo_name" class="col-sm-3 control-label">{tmpl_var name='repo_name_txt'}</label> - <div class="col-sm-9"><input type="text" name="repo_name" id="repo_name" value="{tmpl_var name='repo_name'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="repo_url" class="col-sm-3 control-label">{tmpl_var name='repo_url_txt'}</label> - <div class="col-sm-9"><input type="text" name="repo_url" id="repo_url" value="{tmpl_var name='repo_url'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="repo_username" class="col-sm-3 control-label">{tmpl_var name='repo_username_txt'}</label> - <div class="col-sm-9"><input type="text" name="repo_username" id="repo_username" value="{tmpl_var name='repo_username'}" autocomplete="off" class="form-control" /></div></div> - <div class="form-group"> - <label for="repo_password" class="col-sm-3 control-label">{tmpl_var name='repo_password_txt'}</label> - <div class="col-sm-9"><input type="password" name="repo_password" id="repo_password" value="{tmpl_var name='repo_password'}" autocomplete="off" class="form-control" /></div></div> - <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label> - <div class="col-sm-9"> - {tmpl_var name='active'} - </div> - </div> - - - <input type="hidden" name="id" value="{tmpl_var name='id'}"> - - <div class="clear"><div class="right"> - <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/software_repo_edit.php">{tmpl_var name='btn_save_txt'}</button> - <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/software_repo_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> diff --git a/interface/web/admin/templates/software_repo_list.htm b/interface/web/admin/templates/software_repo_list.htm deleted file mode 100644 index d408896de6f943ba0a5d23240f37eefb58dc858a..0000000000000000000000000000000000000000 --- a/interface/web/admin/templates/software_repo_list.htm +++ /dev/null @@ -1,58 +0,0 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <p class="fieldset-legend">{tmpl_var name="toolsarea_head_txt"}</p> - - <button class="btn btn-default formbutton-success" type="button" data-load-content="admin/software_repo_edit.php">{tmpl_var name="add_new_record_txt"}</button> - - - - - <p class="fieldset-legend"><tmpl_var name="list_head_txt"></p> - <div class="table-wrapper marginTop15"> -<table class="table"> - <thead class="dark form-group-sm"> - <tr> - <th class="tiny-col" data-column="active"><tmpl_var name="active_txt"></th> - <th data-column="repo_name"><tmpl_var name="repo_name_txt"></th> - <th data-column="repo_url"><tmpl_var name="repo_url_txt"></th> - <th class="text-right"> </th> - </tr> - <tr> - <td><select class="form-control" name="search_active">{tmpl_var name='search_active'}</select></td> - <td><input class="form-control" type="text" name="search_repo_name" value="{tmpl_var name='search_repo_name'}" /></td> - <td><input class="form-control" type="text" name="search_repo_url" value="{tmpl_var name='search_repo_url'}" /></td> - <td class="text-right"> - <button type="button" class="btn btn-default formbutton-default formbutton-narrow" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" data-submit-form="pageForm" data-form-action="admin/software_repo_list.php"><span class="icon icon-filter"></span></button> - </td> - </tr> - </thead> - <tbody> - <tmpl_loop name="records"> - <tr> - <td><a href="#" data-load-content="admin/software_repo_edit.php?id={tmpl_var name='id'}">{tmpl_var name="active"}</a></td> - <td><a href="#" data-load-content="admin/software_repo_edit.php?id={tmpl_var name='id'}">{tmpl_var name="repo_name"}</a></td> - <td><a href="#" data-load-content="admin/software_repo_edit.php?id={tmpl_var name='id'}">{tmpl_var name="repo_url"}</a></td> - <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/software_repo_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> - </td> - </tr> - </tmpl_loop> - <tmpl_unless name="records"> - <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"> - <td colspan="4">{tmpl_var name='globalsearch_noresults_text_txt'}</td> - </tr> - </tmpl_unless> - </tbody> - <tfoot> - <tr> - <td colspan="4"><tmpl_var name="paging"></td> - </tr> - </tfoot> - </table> -</div> - - \ No newline at end of file diff --git a/interface/web/admin/templates/software_update_list.htm b/interface/web/admin/templates/software_update_list.htm deleted file mode 100644 index 6776b66a7a04ea4d3feb66fbe99dcf9b3e072b98..0000000000000000000000000000000000000000 --- a/interface/web/admin/templates/software_update_list.htm +++ /dev/null @@ -1,53 +0,0 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <legend>Tools</legend> - - <div class="form-group"> - <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_select_txt'}</label> - <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control" onChange="ISPConfig.submitForm('pageForm','admin/software_update_list.php');"> - <tmpl_loop name="servers"> - <option value="{tmpl_var name='server_id'}" {tmpl_var name='selected'}>{tmpl_var name='server_name'}</option> - </tmpl_loop> - </select></div> - - - </div> - - - <p class="fieldset-legend"><tmpl_var name="list_head_txt"></p> - <div class="table-wrapper marginTop15"> -<table class="table"> - <thead class="dark form-group-sm"> - <tr> - <th data-column="installed"><tmpl_var name="installed_txt"></th> - <th data-column="update_title"><tmpl_var name="update_title_txt"></th> - <th data-column="version"><tmpl_var name="version_txt"></th> - </tr> - </thead> - <tbody> - <tmpl_loop name="records"> - <tr> - <td>{tmpl_var name="installed"}</td> - <td>{tmpl_var name="update_title"}</td> - <td>{tmpl_var name="version"}</td> - </tr> - </tmpl_loop> - <tmpl_unless name="records"> - <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"> - <td colspan="3">{tmpl_var name='no_updates_txt'}</td> - </tr> - </tmpl_unless> - </tbody> - <tfoot> - <tr> - <td colspan="3"></td> - </tr> - </tfoot> - </table> -</div> - - \ No newline at end of file diff --git a/interface/web/admin/templates/system_config_mail_edit.htm b/interface/web/admin/templates/system_config_mail_edit.htm index af0a7a25cad39ec7e13f6cfc45584afdfafc853c..ac9271a9cf2c11854ad253d917d13fa06a6985ef 100644 --- a/interface/web/admin/templates/system_config_mail_edit.htm +++ b/interface/web/admin/templates/system_config_mail_edit.htm @@ -4,6 +4,18 @@ {tmpl_var name='enable_custom_login'} </div> </div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='enable_welcome_mail_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='enable_welcome_mail'} + </div> + </div> + <div class ="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='show_per_domain_relay_options_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='show_per_domain_relay_options'} + </div> + </div> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='mailbox_show_autoresponder_tab_txt'}</label> <div class="col-sm-9"> @@ -77,10 +89,10 @@ {tmpl_var name='default_mailserver'} </select></div> </div> - - + + <input type="hidden" name="id" value="{tmpl_var name='id'}"> - + <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/system_config_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/users_list.php">{tmpl_var name='btn_cancel_txt'}</button> diff --git a/interface/web/client/client_del.php b/interface/web/client/client_del.php index c018b7a27db50b9686f63aedce827cc8a89b49ef..dadcae0bdff53f2152b17a59e596d0d906902def 100644 --- a/interface/web/client/client_del.php +++ b/interface/web/client/client_del.php @@ -69,7 +69,8 @@ class page_action extends tform_actions { 'mail_user' => 'email', 'mail_user_filter' => '', 'shell_user' => 'username', - 'spamfilter_users' => '', 'spamfilter_wblist' => '', + 'spamfilter_users' => '', + 'spamfilter_wblist' => '', 'support_message' => '', 'web_domain' => 'domain', 'web_folder' => 'path', @@ -208,6 +209,5 @@ class page_action extends tform_actions { } $page = new page_action; -$page->onDelete() +$page->onDelete(); -?> diff --git a/interface/web/client/client_edit.php b/interface/web/client/client_edit.php index bbc7849f1f296bbda7bb132252a36574ed7f6638..f1964d7eff567a3ef7bd5d93d859a7c8ebb3c519 100644 --- a/interface/web/client/client_edit.php +++ b/interface/web/client/client_edit.php @@ -92,7 +92,7 @@ class page_action extends tform_actions { } } } - + //* Resellers shall not be able to create another reseller if($_SESSION["s"]["user"]["typ"] == 'user') { $this->dataRecord['limit_client'] = 0; @@ -181,18 +181,35 @@ class page_action extends tform_actions { $app->tpl->setVar('template_additional_list', $text); $app->tpl->setVar('app_module', 'client'); - + + // Check wether per domain relaying is enabled or not + $global_config = $app->getconf->get_global_config('mail'); + if($global_config['show_per_domain_relay_options'] == 'y') { + $app->tpl->setVar("show_per_domain_relay_options", 1); + } else { + $app->tpl->setVar("show_per_domain_relay_options", 0); + } + + // APS is enabled or not + $global_config = $app->getconf->get_global_config('sites'); + if($global_config['show_aps_menu'] == 'y') { + $app->tpl->setVar("show_aps_menu", 1); + } else { + $app->tpl->setVar("show_aps_menu", 0); + } + + //* Set the 'customer no' default value if($this->id == 0) { - + if($app->auth->is_admin()) { //* Logged in User is admin //* get the system config $app->uses('getconf'); $system_config = $app->getconf->get_global_config(); if($system_config['misc']['customer_no_template'] != '') { - + //* Set customer no default $customer_no = $app->functions->intval($system_config['misc']['customer_no_start']+$system_config['misc']['customer_no_counter']); $customer_no_string = str_replace('[CUSTOMER_NO]',$customer_no,$system_config['misc']['customer_no_template']); @@ -203,7 +220,7 @@ class page_action extends tform_actions { //* get the record of the reseller $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); $reseller = $app->db->queryOneRecord("SELECT client.client_id, client.customer_no_template, client.customer_no_counter, client.customer_no_start FROM sys_group,client WHERE client.client_id = sys_group.client_id and sys_group.groupid = ?", $client_group_id); - + if($reseller['customer_no_template'] != '') { if(isset($this->dataRecord['customer_no'])&& $this->dataRecord['customer_no']!='') $customer_no_string = $this->dataRecord['customer_no']; else { @@ -215,7 +232,7 @@ class page_action extends tform_actions { } } } - + if($app->auth->is_admin()) { // Fill the client select field $sql = "SELECT client.client_id, sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 AND client.limit_client != 0 ORDER BY client.company_name, client.contact_name, sys_group.name"; @@ -234,7 +251,7 @@ class page_action extends tform_actions { } $app->tpl->setVar("parent_client_id", $client_select); } - + parent::onShowEnd(); } @@ -317,7 +334,7 @@ class page_action extends tform_actions { $app->uses('client_templates'); $app->client_templates->update_client_templates($this->id, $this->_template_additional); } - + if($this->dataRecord['customer_no'] == $this->dataRecord['customer_no_org']) { if($app->auth->is_admin()) { //* Logged in User is admin @@ -325,7 +342,7 @@ class page_action extends tform_actions { $app->uses('getconf'); $system_config = $app->getconf->get_global_config(); if($system_config['misc']['customer_no_template'] != '') { - + //* save new counter value $system_config['misc']['customer_no_counter']++; $system_config_str = $app->ini_parser->get_ini_string($system_config); @@ -336,7 +353,7 @@ class page_action extends tform_actions { //* get the record of the reseller $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); $reseller = $app->db->queryOneRecord("SELECT client.client_id, client.customer_no_template, client.customer_no_counter, client.customer_no_start FROM sys_group,client WHERE client.client_id = sys_group.client_id and sys_group.groupid = ?", $client_group_id); - + if($reseller['customer_no_template'] != '') { //* save new counter value $customer_no_counter = $app->functions->intval($reseller['customer_no_counter']+1); @@ -344,7 +361,7 @@ class page_action extends tform_actions { } } } - + //* Send welcome email $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); $sql = "SELECT * FROM client_message_template WHERE template_type = 'welcome' AND sys_groupid = ?"; @@ -369,7 +386,7 @@ class page_action extends tform_actions { $subject = str_replace('{'.$key.'}', $val, $subject); } } - + //* Get sender address if($app->auth->is_admin()) { $app->uses('getconf'); @@ -384,7 +401,7 @@ class page_action extends tform_actions { //* Send the email $app->functions->mail($client['email'], $subject, $message, $from); } - + parent::onAfterInsert(); } @@ -417,122 +434,16 @@ class page_action extends tform_actions { $app->db->query($sql, $password, $client_id); } - if(!isset($this->dataRecord['locked'])) $this->dataRecord['locked'] = 'n'; - if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && $this->dataRecord["locked"] != $this->oldDataRecord['locked']) { - /** lock all the things like web, mail etc. - easy to extend */ - - - // get tmp_data of client - $client_data = $app->db->queryOneRecord('SELECT `tmp_data` FROM `client` WHERE `client_id` = ?', $this->id); - - if($client_data['tmp_data'] == '') $tmp_data = array(); - else $tmp_data = unserialize($client_data['tmp_data']); - - if(!is_array($tmp_data)) $tmp_data = array(); - - // database tables with their primary key columns - $to_disable = array('cron' => 'id', - 'ftp_user' => 'ftp_user_id', - 'mail_domain' => 'domain_id', - 'mail_user' => 'mailuser_id', - 'mail_user_smtp' => 'mailuser_id', - 'mail_forwarding' => 'forwarding_id', - 'mail_get' => 'mailget_id', - 'openvz_vm' => 'vm_id', - 'shell_user' => 'shell_user_id', - 'webdav_user' => 'webdav_user_id', - 'web_database' => 'database_id', - 'web_domain' => 'domain_id', - 'web_folder' => 'web_folder_id', - 'web_folder_user' => 'web_folder_user_id' - ); - - $udata = $app->db->queryOneRecord('SELECT `userid` FROM `sys_user` WHERE `client_id` = ?', $this->id); - $gdata = $app->db->queryOneRecord('SELECT `groupid` FROM `sys_group` WHERE `client_id` = ?', $this->id); - $sys_groupid = $gdata['groupid']; - $sys_userid = $udata['userid']; - - $entries = array(); - if($this->dataRecord['locked'] == 'y') { - $prev_active = array(); - $prev_sysuser = array(); - foreach($to_disable as $current => $keycolumn) { - $active_col = 'active'; - $reverse = false; - if($current == 'mail_user') { - $active_col = 'postfix'; - } elseif($current == 'mail_user_smtp') { - $current = 'mail_user'; - $active_col = 'disablesmtp'; - $reverse = true; - } - - if(!isset($prev_active[$current])) $prev_active[$current] = array(); - if(!isset($prev_sysuser[$current])) $prev_sysuser[$current] = array(); - - $entries = $app->db->queryAllRecords('SELECT ?? as `id`, `sys_userid`, ?? FROM ?? WHERE `sys_groupid` = ?', $keycolumn, $active_col, $current, $sys_groupid); - foreach($entries as $item) { - - if($item[$active_col] != 'y' && $reverse == false) $prev_active[$current][$item['id']][$active_col] = 'n'; - elseif($item[$active_col] == 'y' && $reverse == true) $prev_active[$current][$item['id']][$active_col] = 'y'; - if($item['sys_userid'] != $sys_userid) $prev_sysuser[$current][$item['id']] = $item['sys_userid']; - // we don't have to store these if y, as everything without previous state gets enabled later - - $app->db->datalogUpdate($current, array($active_col => ($reverse == true ? 'y' : 'n'), 'sys_userid' => $_SESSION["s"]["user"]["userid"]), $keycolumn, $item['id']); - } - } - - $tmp_data['prev_active'] = $prev_active; - $tmp_data['prev_sys_userid'] = $prev_sysuser; - $app->db->query("UPDATE `client` SET `tmp_data` = ? WHERE `client_id` = ?", serialize($tmp_data), $this->id); - unset($prev_active); - unset($prev_sysuser); - } elseif($this->dataRecord['locked'] == 'n') { - foreach($to_disable as $current => $keycolumn) { - $active_col = 'active'; - $reverse = false; - if($current == 'mail_user') { - $active_col = 'postfix'; - } elseif($current == 'mail_user_smtp') { - $current = 'mail_user'; - $active_col = 'disablesmtp'; - $reverse = true; - } - - $entries = $app->db->queryAllRecords('SELECT ?? as `id` FROM ?? WHERE `sys_groupid` = ?', $keycolumn, $current, $sys_groupid); - foreach($entries as $item) { - $set_active = ($reverse == true ? 'n' : 'y'); - $set_inactive = ($reverse == true ? 'y' : 'n'); - $set_sysuser = $sys_userid; - if(array_key_exists('prev_active', $tmp_data) == true - && array_key_exists($current, $tmp_data['prev_active']) == true - && array_key_exists($item['id'], $tmp_data['prev_active'][$current]) == true - && $tmp_data['prev_active'][$current][$item['id']][$active_col] == $set_inactive) $set_active = $set_inactive; - if(array_key_exists('prev_sysuser', $tmp_data) == true - && array_key_exists($current, $tmp_data['prev_sysuser']) == true - && array_key_exists($item['id'], $tmp_data['prev_sysuser'][$current]) == true - && $tmp_data['prev_sysuser'][$current][$item['id']] != $sys_userid) $set_sysuser = $tmp_data['prev_sysuser'][$current][$item['id']]; - - $app->db->datalogUpdate($current, array($active_col => $set_active, 'sys_userid' => $set_sysuser), $keycolumn, $item['id']); - } - } - if(array_key_exists('prev_active', $tmp_data)) unset($tmp_data['prev_active']); - $app->db->query("UPDATE `client` SET `tmp_data` = ? WHERE `client_id` = ?", serialize($tmp_data), $this->id); - } - unset($tmp_data); - unset($entries); - unset($to_disable); - } + // lock and cancel + if(!isset($this->dataRecord['locked'])) $this->dataRecord['locked'] = 'n'; + if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && $this->dataRecord["locked"] != $this->oldDataRecord['locked']) + { + $lock = $app->functions->func_client_lock($this->id,$this->dataRecord["locked"]); + } if(!isset($this->dataRecord['canceled'])) $this->dataRecord['canceled'] = 'n'; if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && $this->dataRecord["canceled"] != $this->oldDataRecord['canceled']) { - if($this->dataRecord['canceled'] == 'y') { - $sql = "UPDATE sys_user SET active = '0' WHERE client_id = ?"; - $app->db->query($sql, $this->id); - } elseif($this->dataRecord['canceled'] == 'n') { - $sql = "UPDATE sys_user SET active = '1' WHERE client_id = ?"; - $app->db->query($sql, $this->id); - } + $cancel = $app->functions->func_client_cancel($this->id,$this->dataRecord["canceled"]); } // language changed @@ -551,14 +462,14 @@ class page_action extends tform_actions { $sql = "UPDATE sys_user SET modules = ? WHERE client_id = ?"; $app->db->query($sql, $modules, $client_id); } - + //* Client has been moved to another reseller if($_SESSION['s']['user']['typ'] == 'admin' && isset($this->dataRecord['parent_client_id']) && $this->dataRecord['parent_client_id'] != $this->oldDataRecord['parent_client_id']) { //* Get groupid of the client $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ?", $this->id); $groupid = $tmp['groupid']; unset($tmp); - + //* Remove sys_user of old reseller from client group if($this->oldDataRecord['parent_client_id'] > 0) { //* get userid of the old reseller remove it from the group of the client @@ -566,7 +477,7 @@ class page_action extends tform_actions { $app->auth->remove_group_from_user($tmp['userid'], $groupid); unset($tmp); } - + //* Add sys_user of new reseller to client group if($this->dataRecord['parent_client_id'] > 0) { //* get userid of the reseller and add it to the group of the client diff --git a/interface/web/client/client_template_edit.php b/interface/web/client/client_template_edit.php index 8ae08b965ed2e321ee546eca8a01f3c2260695b2..7cc3ab5ff9742bd1d8b48bf0120a8399b6b1c954 100644 --- a/interface/web/client/client_template_edit.php +++ b/interface/web/client/client_template_edit.php @@ -51,19 +51,38 @@ $app->load('tform_actions'); class page_action extends tform_actions { - + function onSubmit() { global $app; - + //* Resellers shall not be able to create another reseller or set reseller specific settings if($_SESSION["s"]["user"]["typ"] == 'user') { $this->dataRecord['limit_client'] = 0; $this->dataRecord['limit_domainmodule'] = 0; } - + parent::onSubmit(); } - + + function onShowEnd() { + global $app; + // Check wether per domain relaying is enabled or not + $global_config = $app->getconf->get_global_config('mail'); + if($global_config['show_per_domain_relay_options'] == 'y') { + $app->tpl->setVar("show_per_domain_relay_options", 1); + } else { + $app->tpl->setVar("show_per_domain_relay_options", 0); + } + // APS is enabled or not + $global_config = $app->getconf->get_global_config('sites'); + if($global_config['show_aps_menu'] == 'y') { + $app->tpl->setVar("show_aps_menu", 1); + } else { + $app->tpl->setVar("show_aps_menu", 0); + } + parent::onShowEnd(); + } + function onBeforeUpdate() { global $app; diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php index 0801ae3515a3c6631790726e5b211949c6aa4bcd..1f60ffe1b4ca4955a2b74dda44dbf4c307a1a1fc 100644 --- a/interface/web/client/form/client.tform.php +++ b/interface/web/client/form/client.tform.php @@ -840,6 +840,20 @@ $form["tabs"]['limits'] = array ( 'rows' => '', 'cols' => '' ), + 'limit_mail_wblist' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'ISINT', + 'errmsg'=> 'limit_mail_wblist_error_notint'), + ), + 'default' => '-1', + 'value' => '', + 'separator' => '', + 'width' => '10', + 'maxlength' => '10', + 'rows' => '', + 'cols' => '' + ), 'limit_mailfilter' => array ( 'datatype' => 'INTEGER', 'formtype' => 'TEXT', @@ -924,6 +938,20 @@ $form["tabs"]['limits'] = array ( 'rows' => '', 'cols' => '' ), + 'limit_mail_backup' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'valuelimit' => 'client:limit_mail_backup', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'limit_relayhost' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'valuelimit' => 'client:limit_relayhost', + 'value' => array(0 => 'n', 1 => 'y') + ), 'default_xmppserver' => array ( 'datatype' => 'INTEGER', 'formtype' => 'SELECT', diff --git a/interface/web/client/form/client_template.tform.php b/interface/web/client/form/client_template.tform.php index 4a3405bbe5f622a8fce3328a3d16156626269021..adf72670f8f01f97a1bc02e8a9e35b797191b09c 100644 --- a/interface/web/client/form/client_template.tform.php +++ b/interface/web/client/form/client_template.tform.php @@ -256,6 +256,20 @@ $form["tabs"]['limits'] = array ( 'rows' => '', 'cols' => '' ), + 'limit_mail_wblist' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'ISINT', + 'errmsg'=> 'limit_mail_wblist_error_notint'), + ), + 'default' => '-1', + 'value' => '', + 'separator' => '', + 'width' => '10', + 'maxlength' => '10', + 'rows' => '', + 'cols' => '' + ), 'limit_mailfilter' => array ( 'datatype' => 'INTEGER', 'formtype' => 'TEXT', @@ -339,7 +353,22 @@ $form["tabs"]['limits'] = array ( 'maxlength' => '10', 'rows' => '', 'cols' => '' - ),/* + ), + 'limit_mail_backup' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'valuelimit' => 'client:limit_mail_backup', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'limit_relayhost' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'valuelimit' => 'client:limit_relayhost', + 'value' => array(0 => 'n', 1 => 'y') + ), + /* 'default_xmppserver' => array ( 'datatype' => 'INTEGER', 'formtype' => 'SELECT', diff --git a/interface/web/client/form/domain.tform.php b/interface/web/client/form/domain.tform.php index a3dc1aaac030bab9328c8beb677d32033c86dea1..f521a55b2dac3b5b8f8c18628f4ffbd2b63aa047 100644 --- a/interface/web/client/form/domain.tform.php +++ b/interface/web/client/form/domain.tform.php @@ -100,7 +100,7 @@ $form["tabs"]['domain'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'domain_error_unique'), 2 => array ( 'type' => 'REGEX', - 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,63}$/', + 'regex' => '/^[\w\.\-]{1,255}\.[a-zA-Z0-9\-]{2,63}$/', 'errmsg'=> 'domain_error_regex'), ), 'default' => '', diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php index 3c559c78d67bdfd2453c4c878ed9ce1ac19677c2..d48dea62299ca28d4b82c3fc65c337dd87b693c9 100644 --- a/interface/web/client/form/reseller.tform.php +++ b/interface/web/client/form/reseller.tform.php @@ -838,6 +838,20 @@ $form["tabs"]['limits'] = array ( 'rows' => '', 'cols' => '' ), + 'limit_mail_wblist' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'ISINT', + 'errmsg'=> 'limit_mail_wblist_error_notint'), + ), + 'default' => '-1', + 'value' => '', + 'separator' => '', + 'width' => '10', + 'maxlength' => '10', + 'rows' => '', + 'cols' => '' + ), 'limit_mailfilter' => array ( 'datatype' => 'INTEGER', 'formtype' => 'TEXT', @@ -922,6 +936,18 @@ $form["tabs"]['limits'] = array ( 'rows' => '', 'cols' => '' ), + 'limit_mail_backup' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'limit_relayhost' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), 'default_xmppserver' => array ( 'datatype' => 'INTEGER', 'formtype' => 'SELECT', diff --git a/interface/web/client/lib/lang/ar_client.lng b/interface/web/client/lib/lang/ar_client.lng index 04a7c6d17f09e37bbfbb38050f2ec049377b3b30..8b6ff765c9692163f0320df1fe9acc6e3a3bdfc9 100644 --- a/interface/web/client/lib/lang/ar_client.lng +++ b/interface/web/client/lib/lang/ar_client.lng @@ -6,12 +6,14 @@ $wb['limit_mailaliasdomain_txt'] = 'Max. number of domain aliases'; $wb['limit_mailforward_txt'] = 'Max. number of email forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. number of email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. number of email filters'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['company_name_txt'] = 'Company name'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -37,6 +39,7 @@ $wb['company_txt'] = 'Company'; $wb['title_txt'] = 'Title'; $wb['firstname_txt'] = 'Firstname'; $wb['surname_txt'] = 'Surname'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -68,6 +71,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'The email domain alias limit must b $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/ar_client_template.lng b/interface/web/client/lib/lang/ar_client_template.lng index 0a88594a596ba0abf017cf2327cf11bfb97ee02d..464f1426bec1b804c03ffc63190f639cf8df4467 100644 --- a/interface/web/client/lib/lang/ar_client_template.lng +++ b/interface/web/client/lib/lang/ar_client_template.lng @@ -8,12 +8,14 @@ $wb['limit_mailaliasdomain_txt'] = 'Max. number of domain aliases'; $wb['limit_mailforward_txt'] = 'Max. number of email forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. number of email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. number of email filters'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -37,6 +39,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'The email domain alias limit must b $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -91,6 +94,7 @@ $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/ar_reseller.lng b/interface/web/client/lib/lang/ar_reseller.lng index 512bc5cb23709ef0cdef6bc5c604607ecb6b0741..9f3ce64e8007a6dd75590e1e68f32586827d9561 100644 --- a/interface/web/client/lib/lang/ar_reseller.lng +++ b/interface/web/client/lib/lang/ar_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Max. number of email aliases'; $wb['limit_mailforward_txt'] = 'Max. number of email forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. number of email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. number of email filters'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['company_name_txt'] = 'Company name'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'Company'; $wb['title_txt'] = 'Title'; $wb['firstname_txt'] = 'Firstname'; $wb['surname_txt'] = 'Surname'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -66,6 +69,7 @@ $wb['limit_mailalias_error_notint'] = 'The email alias limit must be a number.'; $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/bg_client.lng b/interface/web/client/lib/lang/bg_client.lng index d6effa66e064d4296e1b80ef0066dd3136ce0fe6..233a7c9b2733733bfad7d03bb56a3e308e4aa733 100644 --- a/interface/web/client/lib/lang/bg_client.lng +++ b/interface/web/client/lib/lang/bg_client.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'МакÑ. брой email aliases'; $wb['limit_mailforward_txt'] = 'МакÑ. брой email forwarders'; $wb['limit_mailcatchall_txt'] = 'МакÑ. брой email catchall accounts'; $wb['limit_mailrouting_txt'] = 'МакÑ. брой email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'МакÑ. брой email filters'; $wb['limit_fetchmail_txt'] = 'МакÑ. брой fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Размер на пощенÑките кутии'; $wb['limit_spamfilter_wblist_txt'] = 'МакÑ. брой spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'МакÑ. брой spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'МакÑ. брой spamfilter policys'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'ПощенÑки Ñървър по подразбиране'; $wb['company_name_txt'] = 'КомпаниÑ'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -37,6 +39,7 @@ $wb['title_txt'] = 'Обръщение'; $wb['firstname_txt'] = 'Име'; $wb['surname_txt'] = 'ФамилиÑ'; $wb['limit_client_txt'] = 'МакÑ. брой клиенти'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -63,6 +66,7 @@ $wb['limit_mailalias_error_notint'] = ' The email alias Ñ‚Ñ€Ñбва да е ч $wb['limit_mailforward_error_notint'] = 'The email forward Ñ‚Ñ€Ñбва да е чиÑло'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall Ñ‚Ñ€Ñбва да е чиÑло'; $wb['limit_mailrouting_error_notint'] = 'The email routing Ñ‚Ñ€Ñбва да е чиÑло'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter Ñ‚Ñ€Ñбва да е чиÑло'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail Ñ‚Ñ€Ñбва да е чиÑло'; $wb['limit_mailquota_error_notint'] = 'Размерът на пощенÑките кутии Ñ‚Ñ€Ñбва да е чиÑло.'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/bg_client_template.lng b/interface/web/client/lib/lang/bg_client_template.lng index 75f89a0feaf103179cb050f2c887dad23836d45a..393af633eb323c27eddf094195a82c82f95682d5 100644 --- a/interface/web/client/lib/lang/bg_client_template.lng +++ b/interface/web/client/lib/lang/bg_client_template.lng @@ -7,6 +7,7 @@ $wb['limit_mailalias_txt'] = 'МакÑ. брой на email aliases'; $wb['limit_mailforward_txt'] = 'МакÑ. брой на email forwarders'; $wb['limit_mailcatchall_txt'] = 'МакÑ. брой на email catchall accounts'; $wb['limit_mailrouting_txt'] = 'МакÑ. брой на email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'МакÑ. брой на email filters'; $wb['limit_fetchmail_txt'] = 'МакÑ. брой на fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Квота на пощенÑката кутиÑ'; @@ -14,6 +15,7 @@ $wb['limit_spamfilter_wblist_txt'] = 'МакÑ. брой на spamfilter white / $wb['limit_spamfilter_user_txt'] = 'МакÑ. брой на spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'МакÑ. брой на spamfilter policys'; $wb['limit_client_txt'] = 'МакÑ. брой на Клиентите'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -32,6 +34,7 @@ $wb['limit_mailalias_error_notint'] = 'The email alias Ñ‚Ñ€Ñбва да е чи $wb['limit_mailforward_error_notint'] = 'The email forward Ñ‚Ñ€Ñбва да е чиÑло'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall Ñ‚Ñ€Ñбва да е чиÑло'; $wb['limit_mailrouting_error_notint'] = 'The email routing Ñ‚Ñ€Ñбва да е чиÑло'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter Ñ‚Ñ€Ñбва да е чиÑло'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail Ñ‚Ñ€Ñбва да е чиÑло'; $wb['limit_mailquota_error_notint'] = 'The email quota Ñ‚Ñ€Ñбва да е чиÑло'; @@ -91,6 +94,7 @@ $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/bg_reseller.lng b/interface/web/client/lib/lang/bg_reseller.lng index f749fa5519b493a4c5a3e79eddd82a17c2e755a9..bd25475c64b7d53f9039ee404fb9d352eca2db9f 100644 --- a/interface/web/client/lib/lang/bg_reseller.lng +++ b/interface/web/client/lib/lang/bg_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Max. number of email aliases'; $wb['limit_mailforward_txt'] = 'Max. number of email forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. number of email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. number of email filters'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Квота на пощенÑката кутиÑ'; $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policys'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Мейл Ñървър по подразбиране'; $wb['company_name_txt'] = 'Име на компаниÑта'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'КомпаниÑ'; $wb['title_txt'] = 'Обръщение'; $wb['firstname_txt'] = 'Първо име '; $wb['surname_txt'] = 'ФамилиÑ'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -66,6 +69,7 @@ $wb['limit_mailalias_error_notint'] = 'The email alias Ñ‚Ñ€Ñбва да е чи $wb['limit_mailforward_error_notint'] = 'The email forward Ñ‚Ñ€Ñбва да е чиÑло'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall Ñ‚Ñ€Ñбва да е чиÑло'; $wb['limit_mailrouting_error_notint'] = 'The email routing Ñ‚Ñ€Ñбва да е чиÑло'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter Ñ‚Ñ€Ñбва да е чиÑло'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail Ñ‚Ñ€Ñбва да е чиÑло'; $wb['limit_mailquota_error_notint'] = 'The email quota Ñ‚Ñ€Ñбва да е чиÑло'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng index 2f9d3c205693e7bc0f037b8beeb6d3a2c21a4244..58557a3a00860c55e399213c506b594d8d60d90f 100644 --- a/interface/web/client/lib/lang/br_client.lng +++ b/interface/web/client/lib/lang/br_client.lng @@ -7,13 +7,15 @@ $wb['limit_mailaliasdomain_txt'] = 'Limite de alias de domÃnios'; $wb['limit_mailforward_txt'] = 'Limite de encaminhamentos de email'; $wb['limit_mailcatchall_txt'] = 'Limite de contas cata tudo'; $wb['limit_mailrouting_txt'] = 'Limite de rotas de email'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Limite de filtros de email'; $wb['limit_fetchmail_txt'] = 'Limite de contas de busca'; $wb['limit_mailquota_txt'] = 'Cota da conta de email'; $wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam "lista de permissões/bloqueio"'; $wb['limit_spamfilter_user_txt'] = 'Limite de filtros anti-spam por conta de email'; $wb['limit_spamfilter_policy_txt'] = 'Limite de polÃticas anti-spam'; -$wb['default_mailserver_txt'] = 'Servidor de email padrão'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; +$wb['default_mailserver_txt'] = 'Servidor de e-mail padrão'; $wb['company_name_txt'] = 'Empresa'; $wb['contact_firstname_txt'] = 'Nome do contato'; $wb['contact_name_txt'] = 'Contato'; @@ -39,6 +41,7 @@ $wb['company_txt'] = 'Empresa'; $wb['title_txt'] = 'Cargo'; $wb['firstname_txt'] = 'Nome'; $wb['surname_txt'] = 'Sobrenome'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Limite de domÃnios'; $wb['limit_subdomain_txt'] = 'Limite de subdomÃnios'; $wb['limit_webquota_txt'] = 'Limite da cota de sites'; @@ -73,6 +76,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'O limite de alias de domÃnios de e $wb['limit_mailforward_error_notint'] = 'O limite de encaminhamentos de email deve ser um número.'; $wb['limit_mailcatchall_error_notint'] = 'O limite de contas cata tudo deve ser um número.'; $wb['limit_mailrouting_error_notint'] = 'O limite de rotas de email deve ser um número.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'O limite de filtros de email deve ser um número.'; $wb['limit_mailfetchmail_error_notint'] = 'O limite de contas de busca deve ser um número.'; $wb['limit_mailquota_error_notint'] = 'O limite das cotas de email deve ser um número.'; diff --git a/interface/web/client/lib/lang/br_client_template.lng b/interface/web/client/lib/lang/br_client_template.lng index bfafbeb823a572ac84782bb06c93af1c7efba1d7..92bff5cb06e629bb1b83ccf4bdf2802fc2496fdc 100644 --- a/interface/web/client/lib/lang/br_client_template.lng +++ b/interface/web/client/lib/lang/br_client_template.lng @@ -3,6 +3,7 @@ $wb['ssh_chroot_notempty'] = 'Nenhuma opção chroot SSH selecionada. Selecione $wb['template_type_txt'] = 'Tipo de gabarito'; $wb['template_name_txt'] = 'Nome do gabarito'; $wb['limit_client_error_notint'] = 'Limite de cliente não é um número.'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Servidor de email padrão'; $wb['limit_maildomain_txt'] = 'Limite de domÃnios de email'; $wb['limit_mailbox_txt'] = 'Limite de contas de email'; @@ -12,12 +13,14 @@ $wb['limit_mailmailinglist_txt'] = 'Limite de listas de email'; $wb['limit_mailforward_txt'] = 'Limite de encaminhamentos de email'; $wb['limit_mailcatchall_txt'] = 'Limite de contas cata tudo'; $wb['limit_mailrouting_txt'] = 'Limite de rotas de email'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Limite de filtros de email'; $wb['limit_fetchmail_txt'] = 'Limite de contas de busca'; $wb['limit_mailquota_txt'] = 'Cota da conta de email'; $wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam "lista de permissões/lista de bloqueio"'; $wb['limit_spamfilter_user_txt'] = 'Limite de filtros anti-spam para conta de email'; $wb['limit_spamfilter_policy_txt'] = 'Limite de polÃticas anti-spam'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Limite de domÃnios'; $wb['limit_subdomain_txt'] = 'Limite de subdomÃnios'; $wb['limit_webquota_txt'] = 'Limite da cota de site'; @@ -47,6 +50,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'O limite de alias de domÃnios deve $wb['limit_mailforward_error_notint'] = 'O limite de encaminhamento de emails deve ser um número.'; $wb['limit_mailcatchall_error_notint'] = 'O limite de contas cata tudo deve ser um número.'; $wb['limit_mailrouting_error_notint'] = 'O limite de rotas de email deve ser um número.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'O limite de filtros de email deve ser um número.'; $wb['limit_mailfetchmail_error_notint'] = 'O limite de contas de busca deve ser um número.'; $wb['limit_mailquota_error_notint'] = 'O limite da cota de emails deve ser um número.'; diff --git a/interface/web/client/lib/lang/br_reseller.lng b/interface/web/client/lib/lang/br_reseller.lng index 08941ffd885ad552a014d4c3c886f5cfc58b7be2..fea2945178b27515760599e835e6a117f2c7fdf8 100644 --- a/interface/web/client/lib/lang/br_reseller.lng +++ b/interface/web/client/lib/lang/br_reseller.lng @@ -7,13 +7,15 @@ $wb['limit_mailaliasdomain_txt'] = 'Limite de alias de domÃnios'; $wb['limit_mailforward_txt'] = 'Limite de encaminhamentos de email'; $wb['limit_mailcatchall_txt'] = 'Limite de contas cata tudo'; $wb['limit_mailrouting_txt'] = 'Limite de rotas de email'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Limite de filtros de email'; $wb['limit_fetchmail_txt'] = 'Limite de contas de busca'; $wb['limit_mailquota_txt'] = 'Cota de contas de email'; $wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam "lista de permissões/bloqueio"'; $wb['limit_spamfilter_user_txt'] = 'Limite de filtros anti-spam por usuário'; $wb['limit_spamfilter_policy_txt'] = 'Limite de polÃticas anti-spam'; -$wb['default_mailserver_txt'] = 'Servidor de email padrão'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; +$wb['default_mailserver_txt'] = 'Servidor de e-mail padrão'; $wb['company_name_txt'] = 'Empresa'; $wb['contact_firstname_txt'] = 'Contato'; $wb['contact_name_txt'] = 'Nome do contato'; @@ -39,6 +41,7 @@ $wb['company_txt'] = 'Empresa'; $wb['title_txt'] = 'TÃtulo'; $wb['firstname_txt'] = 'Nome'; $wb['surname_txt'] = 'Sobrenome'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Limite de domÃnios'; $wb['limit_subdomain_txt'] = 'Limite de subdomÃnios'; $wb['limit_webquota_txt'] = 'Cota de sites'; @@ -73,6 +76,7 @@ $wb['limit_mailalias_error_notint'] = 'O limite de alias de email deve ser um n $wb['limit_mailforward_error_notint'] = 'O limite de encaminhamentos deve ser um número.'; $wb['limit_mailcatchall_error_notint'] = 'O limite de contas cata tudo deve ser um número.'; $wb['limit_mailrouting_error_notint'] = 'O limite de rotas de email deve ser um número.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'O limite de filtros de email deve ser um número.'; $wb['limit_mailfetchmail_error_notint'] = 'O limite de contas de busca deve ser um número.'; $wb['limit_mailquota_error_notint'] = 'O limite das cotas de email deve ser um número.'; diff --git a/interface/web/client/lib/lang/ca_client.lng b/interface/web/client/lib/lang/ca_client.lng index e4cc2f2dbe8abe53e47b862059d98c0a6ed859ec..4482b8f2415cd068bdf22d9ea8e8bb1494b15cd2 100644 --- a/interface/web/client/lib/lang/ca_client.lng +++ b/interface/web/client/lib/lang/ca_client.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Nombre maximal d\'alias d\'email'; $wb['limit_mailforward_txt'] = 'Nombre maximal de routeurs d\'email'; $wb['limit_mailcatchall_txt'] = 'Nombre maximal de comptes collecteurs'; $wb['limit_mailrouting_txt'] = 'Nombre maximal de routes d\'email'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Nombre maximal de filtres d\'emails'; $wb['limit_fetchmail_txt'] = 'Nombre maximal de comptes récupérateur courriel'; $wb['limit_mailquota_txt'] = 'Quota des boites courriel'; $wb['limit_spamfilter_wblist_txt'] = 'Nombre maximal de liste blanches/noires d\'email'; $wb['limit_spamfilter_user_txt'] = 'Nombre maximal d\'utilisateurs du filtre antispam'; $wb['limit_spamfilter_policy_txt'] = 'Nombre maximal de règles du filtre antispam'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Serveur mail par défaut'; $wb['company_name_txt'] = 'Nom de l\'entreprise'; $wb['contact_name_txt'] = 'Nom de contact'; @@ -36,6 +38,7 @@ $wb['title_txt'] = 'Titre'; $wb['firstname_txt'] = 'Prénom'; $wb['surname_txt'] = 'Nom'; $wb['limit_client_txt'] = 'Nombre maximal de clients'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Nombre maximal de domaines'; $wb['limit_subdomain_txt'] = 'Nombre maximal de sous-domaines'; $wb['limit_webquota_txt'] = 'Limite du quota web'; @@ -61,6 +64,7 @@ $wb['limit_mailalias_error_notint'] = 'La limite d\'alias d\'email doit être un $wb['limit_mailforward_error_notint'] = 'La limite de routeurs d\'email doit être un nombre.'; $wb['limit_mailcatchall_error_notint'] = 'La limite de comptes collecteurs doit être un nombre.'; $wb['limit_mailrouting_error_notint'] = 'La limite de routes d\'email doit être un nombre.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'La limite de filtres d\'email doit être un nombre.'; $wb['limit_mailfetchmail_error_notint'] = 'La limite de comptes récupérateur courriel doit être un nombre.'; $wb['limit_mailquota_error_notint'] = 'La limite du quota des boites d\'email doit être un nombre.'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/ca_client_template.lng b/interface/web/client/lib/lang/ca_client_template.lng index aa51796744065e73767b39037d08c8f93970fe81..2a0f6eac455066350e28e2cf2d6169dd4159ed0a 100644 --- a/interface/web/client/lib/lang/ca_client_template.lng +++ b/interface/web/client/lib/lang/ca_client_template.lng @@ -7,6 +7,7 @@ $wb['limit_mailalias_txt'] = 'Nombre maximal d\'alias d\'email'; $wb['limit_mailforward_txt'] = 'Nombre maximal de routeurs d\'email'; $wb['limit_mailcatchall_txt'] = 'Nombre maximal de comptes collecteurs'; $wb['limit_mailrouting_txt'] = 'Nombre maximal de routes d\'emails'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Nombre maximal de filtres d\'emails'; $wb['limit_fetchmail_txt'] = 'Nombre maximal de comptes récupérateur courriel'; $wb['limit_mailquota_txt'] = 'Quota des boites courriel'; @@ -14,6 +15,7 @@ $wb['limit_spamfilter_wblist_txt'] = 'Nombre maximal de liste blanches/noires d\ $wb['limit_spamfilter_user_txt'] = 'Nombre maximal d\'utilisateurs du filtre antispam'; $wb['limit_spamfilter_policy_txt'] = 'Nombre maximal de règles du filtre antispam'; $wb['limit_client_txt'] = 'Nombre maximal de clients'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Nombre maximal de domaines'; $wb['limit_subdomain_txt'] = 'Nombre maximal de sous-domaines'; $wb['limit_webquota_txt'] = 'Limite du quota web'; @@ -31,6 +33,7 @@ $wb['limit_mailalias_error_notint'] = 'La limite d\'alias d\'email doit être un $wb['limit_mailforward_error_notint'] = 'La limite de routeurs d\'email doit être un nombre.'; $wb['limit_mailcatchall_error_notint'] = 'La limite de comptes collecteurs doit être un nombre.'; $wb['limit_mailrouting_error_notint'] = 'La limite de routes d\'email doit être un nombre.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'La limite de filtres d\'email doit être un nombre.'; $wb['limit_mailfetchmail_error_notint'] = 'La limite de comptes récupérateur courriel doit être un nombre.'; $wb['limit_mailquota_error_notint'] = 'La limite du quota des boites d\'email doit être un nombre.'; @@ -90,6 +93,7 @@ $wb['limit_aps_txt'] = 'Nombre max d\'instances APS'; $wb['limit_aps_error_notint'] = 'La limite d\'instances APS doit être un nombre.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/ca_reseller.lng b/interface/web/client/lib/lang/ca_reseller.lng index 411096ef5402dab83ac64fbe3f5c7e2f37007a40..7d92ced9888ab9105744d8b615c37721955c464e 100644 --- a/interface/web/client/lib/lang/ca_reseller.lng +++ b/interface/web/client/lib/lang/ca_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Nombre maximal d\'alias d\'email'; $wb['limit_mailforward_txt'] = 'Nombre maximal de routeurs d\'email'; $wb['limit_mailcatchall_txt'] = 'Nombre maximal de comptes collecteurs'; $wb['limit_mailrouting_txt'] = 'Nombre maximal de routes d\'emails'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Nombre maximal de filtres d\'emails'; $wb['limit_fetchmail_txt'] = 'Nombre maximal de comptes récupérateur courriel'; $wb['limit_mailquota_txt'] = 'Quota des boites courriel'; $wb['limit_spamfilter_wblist_txt'] = 'Nombre maximal de liste blanches/noires d\'emails'; $wb['limit_spamfilter_user_txt'] = 'Nombre maximal d\'utilisateurs du filtre antispam'; $wb['limit_spamfilter_policy_txt'] = 'Nombre maximal de règles du filtre antispam'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Serveur mail par défaut'; $wb['company_name_txt'] = 'Nom de l\'entreprise'; $wb['contact_name_txt'] = 'Nom de contact'; @@ -35,6 +37,7 @@ $wb['company_txt'] = 'Entreprise'; $wb['title_txt'] = 'Titre'; $wb['firstname_txt'] = 'Prénom'; $wb['surname_txt'] = 'Nom'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Nombre maximal de domaines'; $wb['limit_subdomain_txt'] = 'Nombre maximal de sous-domaines'; $wb['limit_webquota_txt'] = 'Limite du quota web'; @@ -64,6 +67,7 @@ $wb['limit_mailalias_error_notint'] = 'La limite d\'alias d\'email doit être un $wb['limit_mailforward_error_notint'] = 'La limite de routeurs d\'email doit être un nombre.'; $wb['limit_mailcatchall_error_notint'] = 'La limite de comptes collecteurs doit être un nombre.'; $wb['limit_mailrouting_error_notint'] = 'La limite de routes d\'email doit être un nombre.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'La limite de filtres d\'email doit être un nombre.'; $wb['limit_mailfetchmail_error_notint'] = 'La limite de comptes récupérateur courriel doit être un nombre.'; $wb['limit_mailquota_error_notint'] = 'La limite du quota des boites d\'email doit être un nombre.'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/cz_client.lng b/interface/web/client/lib/lang/cz_client.lng index 372080507e70e08ec1e87ff5bffd3ddcc3702562..691bac508a09cdf18debf37c3878096e3835757d 100644 --- a/interface/web/client/lib/lang/cz_client.lng +++ b/interface/web/client/lib/lang/cz_client.lng @@ -6,12 +6,14 @@ $wb['limit_mailaliasdomain_txt'] = 'Max. poÄet doménových pÅ™ezdÃvek'; $wb['limit_mailforward_txt'] = 'Max. poÄet e-mailových pÅ™edavaÄů'; $wb['limit_mailcatchall_txt'] = 'Max. poÄet e-mailových košů'; $wb['limit_mailrouting_txt'] = 'Max. poÄet e-mailových smÄ›rovánÃ'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. poÄet e-mailových filtrů'; $wb['limit_fetchmail_txt'] = 'Max. poÄet úÄtů externÃho zÃskávánà e-mailů'; $wb['limit_mailquota_txt'] = 'Kvóta e-mailové schránky'; $wb['limit_spamfilter_wblist_txt'] = 'Max. poÄet spamfiltrových bÃlých / Äerných listinových filtrů'; $wb['limit_spamfilter_user_txt'] = 'Max. poÄet spamflitrových uživatelů'; $wb['limit_spamfilter_policy_txt'] = 'Max. poÄet spamfiltrových politik'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Výchozà e-mailový server'; $wb['company_name_txt'] = 'Název spoleÄnosti'; $wb['contact_name_txt'] = 'Název kontaktu'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'SpoleÄnost'; $wb['title_txt'] = 'Titul'; $wb['firstname_txt'] = 'Jméno'; $wb['surname_txt'] = 'PÅ™ÃjmenÃ'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -67,6 +70,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'Limit pro e-mailové doménové ali $wb['limit_mailforward_error_notint'] = 'Limit pro e-mailové pÅ™edávánà musà být ÄÃslo.'; $wb['limit_mailcatchall_error_notint'] = 'Limit pro e-mailové koÅ¡e musà být ÄÃslo.'; $wb['limit_mailrouting_error_notint'] = 'Limit pro e-mailová smÄ›rovánà musà být ÄÃslo.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Limit pro e-mailové filtry limit musà být ÄÃslo.'; $wb['limit_mailfetchmail_error_notint'] = 'Limit pro externà zÃskávánà e-mailů musà být ÄÃslo.'; $wb['limit_mailquota_error_notint'] = 'Limit pro e-mailovou kvótu musà být ÄÃslo.'; diff --git a/interface/web/client/lib/lang/cz_client_template.lng b/interface/web/client/lib/lang/cz_client_template.lng index 8cb8b34a4ea09113f0f4643b826d04b9b7cb1d53..f927e7bffdcd3b2acf51f25b20d9ae936d84dac6 100644 --- a/interface/web/client/lib/lang/cz_client_template.lng +++ b/interface/web/client/lib/lang/cz_client_template.lng @@ -8,12 +8,14 @@ $wb['limit_mailaliasdomain_txt'] = 'Max. poÄet doménových pÅ™ezdÃvek'; $wb['limit_mailforward_txt'] = 'Max. poÄet e-mailových pÅ™edávánÃ'; $wb['limit_mailcatchall_txt'] = 'Max. poÄet e-mailových košů'; $wb['limit_mailrouting_txt'] = 'Max. poÄet e-mailových smÄ›rovánÃ'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. poÄet e-mailových filtrů'; $wb['limit_fetchmail_txt'] = 'Max. poÄet úÄtů externÃho zÃskávánà e-mailů'; $wb['limit_mailquota_txt'] = 'Kvóta e-mailové schránky'; $wb['limit_spamfilter_wblist_txt'] = 'Max. poÄet spamfiltrových bÃlých / Äerných listinových filtrů'; $wb['limit_spamfilter_user_txt'] = 'Max. poÄet spamflitrových uživatelů'; $wb['limit_spamfilter_policy_txt'] = 'Max. poÄet spamfiltrových politik'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -37,6 +39,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'Limit pro e-mailové doménové ali $wb['limit_mailforward_error_notint'] = 'Limit pro e-mailové pÅ™edávánà musà být ÄÃslo.'; $wb['limit_mailcatchall_error_notint'] = 'Limit pro e-mailové koÅ¡e musà být ÄÃslo.'; $wb['limit_mailrouting_error_notint'] = 'Limit pro e-mailová smÄ›rovánà musà být ÄÃslo.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Limit pro e-mailové filtry limit musà být ÄÃslo.'; $wb['limit_mailfetchmail_error_notint'] = 'Limit pro externà zÃskávánà e-mailů musà být ÄÃslo.'; $wb['limit_mailquota_error_notint'] = 'Limit pro e-mailovou kvótu musà být ÄÃslo.'; @@ -90,6 +93,7 @@ $wb['limit_aps_txt'] = 'Max. poÄet APS instalacÃ'; $wb['limit_aps_error_notint'] = 'Limit pro APS instalace musà být ÄÃslo.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Klientské limity'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Výchozà E-mailový server'; $wb['default_webserver_txt'] = 'Výchozà webový server'; $wb['default_dnsserver_txt'] = 'Výchozà DNS server'; diff --git a/interface/web/client/lib/lang/cz_reseller.lng b/interface/web/client/lib/lang/cz_reseller.lng index 751afa6990f0d674ad528ae40e985917f42d1f1c..3b137a11bc9999b1b1c299dbab0807dc491f93bc 100644 --- a/interface/web/client/lib/lang/cz_reseller.lng +++ b/interface/web/client/lib/lang/cz_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Max. poÄet e-mailových aliasů'; $wb['limit_mailforward_txt'] = 'Max. poÄet e-mailových pÅ™edávánÃ'; $wb['limit_mailcatchall_txt'] = 'Max. poÄet e-mailových košů'; $wb['limit_mailrouting_txt'] = 'Max. poÄet e-mailových smÄ›rovánÃ'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. poÄet e-mailových filtrů'; $wb['limit_fetchmail_txt'] = 'Max. poÄet úÄtů externÃho zÃskávánà e-mailů'; $wb['limit_mailquota_txt'] = 'Kvóta e-mailové schránky'; $wb['limit_spamfilter_wblist_txt'] = 'Max. poÄet spamfiltrových bÃlých / Äerných listinových filtrů'; $wb['limit_spamfilter_user_txt'] = 'Max. poÄet spamflitrových uživatelů'; $wb['limit_spamfilter_policy_txt'] = 'Max. poÄet spamfiltrových politik'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Výchozà e-mailový server'; $wb['company_name_txt'] = 'Název spoleÄnosti'; $wb['contact_name_txt'] = 'Název kontaktu'; @@ -35,6 +37,7 @@ $wb['company_txt'] = 'SpoleÄnost'; $wb['title_txt'] = 'Titul'; $wb['firstname_txt'] = 'Jméno'; $wb['surname_txt'] = 'PÅ™ÃjmenÃ'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -65,6 +68,7 @@ $wb['limit_mailalias_error_notint'] = 'Limit pro e-mailové aliasy musà být Ä $wb['limit_mailforward_error_notint'] = 'Limit pro e-mailové pÅ™edávánà musà být ÄÃslo.'; $wb['limit_mailcatchall_error_notint'] = 'Limit pro e-mailové koÅ¡e musà být ÄÃslo.'; $wb['limit_mailrouting_error_notint'] = 'Limit pro e-mailová smÄ›rovánà musà být ÄÃslo.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Limit pro e-mailové filtry limit musà být ÄÃslo.'; $wb['limit_mailfetchmail_error_notint'] = 'Limit pro externà zÃskávánà e-mailů musà být ÄÃslo.'; $wb['limit_mailquota_error_notint'] = 'Limit pro e-mailovou kvótu musà být ÄÃslo.'; diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng index ca22ce638cf7c28d3dd33e717df4e8c25bbfd3a0..c75f3263a02360a77b8d144b11a49e220eb98e2e 100644 --- a/interface/web/client/lib/lang/de_client.lng +++ b/interface/web/client/lib/lang/de_client.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Max. Anzahl an E-Mail Aliase'; $wb['limit_mailforward_txt'] = 'Max. Anzahl an E-Mail Weiterleitungen'; $wb['limit_mailcatchall_txt'] = 'Max. Anzahl an E-Mail Catchall Konten'; $wb['limit_mailrouting_txt'] = 'Max. Anzahl an E-Mail Routen'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. Anzahl an E-Mail Filter'; $wb['limit_fetchmail_txt'] = 'Max. Anzahl an Fetchmail Konten'; $wb['limit_mailquota_txt'] = 'E-Mail Konto Beschränkung'; $wb['limit_spamfilter_wblist_txt'] = 'Max. Anzahl an Spamfilter (White-/Blacklist)'; $wb['limit_spamfilter_user_txt'] = 'Max. Anzahl an Spamfilter Benutzern'; $wb['limit_spamfilter_policy_txt'] = 'Max. Anzahl an Spamfilter Richtlinien'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Standardmailserver'; $wb['company_name_txt'] = 'Firmenname'; $wb['contact_firstname_txt'] = 'Vorname'; @@ -36,6 +38,7 @@ $wb['title_txt'] = 'Titel'; $wb['firstname_txt'] = 'Vorname'; $wb['surname_txt'] = 'Nachname'; $wb['limit_client_txt'] = 'Max. Anzahl an Kunden'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Max. Anzahl an Domains'; $wb['limit_subdomain_txt'] = 'Max. Anzahl an Subdomains'; $wb['limit_webquota_txt'] = 'Max. Webbeschränkung'; @@ -64,6 +67,7 @@ $wb['limit_mailalias_error_notint'] = 'Das E-Mail Alias Limit muss eine Zahl sei $wb['limit_mailforward_error_notint'] = 'Das E-Mail Weiterleitung Limit muss eine Zahl sein.'; $wb['limit_mailcatchall_error_notint'] = 'Das E-Mail Catchall Limit muss eine Zahl sein.'; $wb['limit_mailrouting_error_notint'] = 'Das E-Mail Routing Limit muss eine Zahl sein.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Das E-Mail Filter Limit muss eine Zahl sein.'; $wb['limit_mailfetchmail_error_notint'] = 'Das Fetchmail Limit muss eine Zahl sein.'; $wb['limit_mailquota_error_notint'] = 'Das E-Mailbeschränkungs Limit muss eine Zahl sein.'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/de_client_template.lng b/interface/web/client/lib/lang/de_client_template.lng index a8431a81878988f8fde1ad02758676606fc06fbf..f985e19847c23a23596b0cb2f1443adfa74548ff 100644 --- a/interface/web/client/lib/lang/de_client_template.lng +++ b/interface/web/client/lib/lang/de_client_template.lng @@ -7,6 +7,7 @@ $wb['limit_mailalias_txt'] = 'Max. Anzahl an E-Mail Aliasse'; $wb['limit_mailforward_txt'] = 'Max. Anzahl an E-Mail Weiterleitungen'; $wb['limit_mailcatchall_txt'] = 'Max. Anzahl an E-Mail Catchall Konten'; $wb['limit_mailrouting_txt'] = 'Max. Anzahl E-Mail Routen'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. Anzahl an E-Mail Filtern'; $wb['limit_fetchmail_txt'] = 'Max. Anzahl an E-Mail Sammeldienst Konten'; $wb['limit_mailquota_txt'] = 'E-Mail Konto Beschränkung'; @@ -14,6 +15,7 @@ $wb['limit_spamfilter_wblist_txt'] = 'Max. Anzahl an Spamfilter (White-/Blacklis $wb['limit_spamfilter_user_txt'] = 'Max. Anzahl Spamfilter Benutzer'; $wb['limit_spamfilter_policy_txt'] = 'Max. Anzahl an Spamfilter Richtlinien'; $wb['limit_client_txt'] = 'Max. Anzahl an Kunden'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Max. Anzahl an Domains'; $wb['limit_subdomain_txt'] = 'Max. Anzahl an Subdomains'; $wb['limit_webquota_txt'] = 'Max. Speicherplatzbeschränkung'; @@ -34,6 +36,7 @@ $wb['limit_mailalias_error_notint'] = 'Das E-Mail Alias Limit muss eine Zahl sei $wb['limit_mailforward_error_notint'] = 'Das E-Mail Weiterleitung Limit muss eine Zahl sein.'; $wb['limit_mailcatchall_error_notint'] = 'Das E-Mail Catchall Limit muss eine Zahl sein.'; $wb['limit_mailrouting_error_notint'] = 'Das E-Mail Routing Limit muss eine Zahl sein.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Das E-Mail Filter Limit muss eine Zahl sein.'; $wb['limit_mailfetchmail_error_notint'] = 'Das E-Mail Sammeldienst Limit muss eine Zahl sein.'; $wb['limit_mailquota_error_notint'] = 'Das E-Mail Beschränkungs Limit muss eine Zahl sein.'; @@ -92,6 +95,7 @@ $wb['limit_aps_txt'] = 'Max. Anzahl an APS-Instanzen'; $wb['limit_aps_error_notint'] = 'Das APS Instanzen Limit muss eine Zahl sein.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Web-Server'; $wb['db_servers_txt'] = 'Datenbank-Server'; $wb['mail_servers_txt'] = 'Mail-Server'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng index 9f68b18cf50c4f33ac987026b17781ec192da0dd..108cf7cd95100009633196d244341a47983109e2 100644 --- a/interface/web/client/lib/lang/de_reseller.lng +++ b/interface/web/client/lib/lang/de_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Max. Anzahl an E-Mail Aliasse'; $wb['limit_mailforward_txt'] = 'Max. Anzahl an E-Mail Weiterleitungen'; $wb['limit_mailcatchall_txt'] = 'Max. Anzahl an E-Mail Catchall Konten'; $wb['limit_mailrouting_txt'] = 'Max. Anzahl an E-Mail Routen'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. Anzahl an E-Mail Filtern'; $wb['limit_fetchmail_txt'] = 'Max. Anzahl an Fetchmail Konten'; $wb['limit_mailquota_txt'] = 'E-Mail konten Beschränkung'; $wb['limit_spamfilter_wblist_txt'] = 'Max. Anzahl an White-/Blacklist Filter'; $wb['limit_spamfilter_user_txt'] = 'Max. Anzahl an Spamfilter Benutzern'; $wb['limit_spamfilter_policy_txt'] = 'Max. Anzahl an Spamfilter Richtlinien'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Standardmailserver'; $wb['company_name_txt'] = 'Firmenname'; $wb['contact_firstname_txt'] = 'Vorname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'Firma'; $wb['title_txt'] = 'Titel'; $wb['firstname_txt'] = 'Vorname'; $wb['surname_txt'] = 'Nachname'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Max. Anzahl an Domains'; $wb['limit_subdomain_txt'] = 'Max. Anzahl an Subdomains'; $wb['limit_webquota_txt'] = 'Max. Speicherplatzbeschränkung'; @@ -65,6 +68,7 @@ $wb['limit_mailalias_error_notint'] = 'Das E-Mail Alias Limit muss eine Zahl sei $wb['limit_mailforward_error_notint'] = 'Das E-Mail Weiterleitungs Limit muss eine Zahl sein.'; $wb['limit_mailcatchall_error_notint'] = 'Das E-Mail Catchall Limit muss eine Zahl sein.'; $wb['limit_mailrouting_error_notint'] = 'Das E-Mail Routing Limit muss eine Zahl sein.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Das E-Mail Filter Limit muss eine Zahl sein.'; $wb['limit_mailfetchmail_error_notint'] = 'Das Fetchmail Limit muss eine Zahl sein.'; $wb['limit_mailquota_error_notint'] = 'Das E-Mail Beschräkungs Limit muss eine Zahl sein.'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/dk_client.lng b/interface/web/client/lib/lang/dk_client.lng index b1e549dd9129065e21ab1e82fc125ce56e40785c..c5154dac5d95889718361249f70da1e499b4d19c 100644 --- a/interface/web/client/lib/lang/dk_client.lng +++ b/interface/web/client/lib/lang/dk_client.lng @@ -7,12 +7,14 @@ $wb['limit_mailaliasdomain_txt'] = 'Max. antal af domæne aliaser'; $wb['limit_mailforward_txt'] = 'Max. antal af e-mail forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. antal af e-mail catchall konti'; $wb['limit_mailrouting_txt'] = 'Max. antal af e-mail routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. antal af e-mail filtere'; $wb['limit_fetchmail_txt'] = 'Max. antal af fetchmail konti'; $wb['limit_mailquota_txt'] = 'Postboks kvota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. antal af spamfilter white/blacklist filtere'; $wb['limit_spamfilter_user_txt'] = 'Max. antal af spamfilter brugere'; $wb['limit_spamfilter_policy_txt'] = 'Max. antal af spamfilter politikker'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Standard Mailserver'; $wb['company_name_txt'] = 'Firma navn'; $wb['contact_name_txt'] = 'Kontakt navn'; @@ -37,6 +39,7 @@ $wb['company_txt'] = 'Firma'; $wb['title_txt'] = 'Titel'; $wb['firstname_txt'] = 'Fornavn'; $wb['surname_txt'] = 'Efternavn'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webkvote'; @@ -70,6 +73,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'E-mail domæne alias grænse skal v $wb['limit_mailforward_error_notint'] = 'E-mail forward grænse skal være et tal.'; $wb['limit_mailcatchall_error_notint'] = 'E-mail catchall grænse skal være et tal.'; $wb['limit_mailrouting_error_notint'] = 'E-mail routing grænse skal være et tal.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'E-mail filter grænse skal være et tal.'; $wb['limit_mailfetchmail_error_notint'] = 'Fetchmail grænse skal være et tal.'; $wb['limit_mailquota_error_notint'] = 'E-mail kvote grænse skal være et tal.'; @@ -202,4 +206,3 @@ $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/dk_client_template.lng b/interface/web/client/lib/lang/dk_client_template.lng index 04acf57d64ac8e999f7178e948dcc3d1557c8ba1..daacc207e49901281a688a0d197266210c662e3d 100644 --- a/interface/web/client/lib/lang/dk_client_template.lng +++ b/interface/web/client/lib/lang/dk_client_template.lng @@ -11,12 +11,14 @@ $wb['limit_mailmailinglist_txt'] = 'Max. antal af mailing lister'; $wb['limit_mailforward_txt'] = 'Max. antal af e-mail forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. antal af e-mail catchall konti'; $wb['limit_mailrouting_txt'] = 'Max. antal af e-mail routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. antal af e-mail filtere'; $wb['limit_fetchmail_txt'] = 'Max. antal af fetchmail konti'; $wb['limit_mailquota_txt'] = 'Postboks kvota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. antal af spamfilter white/blacklist filtere'; $wb['limit_spamfilter_user_txt'] = 'Max. antal af spamfilter brugere'; $wb['limit_spamfilter_policy_txt'] = 'Max. antal af spamfilter politikker'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webkvote'; @@ -42,6 +44,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'E-mail domæne alias grænse skal v $wb['limit_mailforward_error_notint'] = 'E-mail forward grænse skal være et tal.'; $wb['limit_mailcatchall_error_notint'] = 'E-mail catchall grænse skal være et tal.'; $wb['limit_mailrouting_error_notint'] = 'E-mail routing grænse skal være et tal.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'E-mail filter grænse skal være et tal.'; $wb['limit_mailfetchmail_error_notint'] = 'Fetchmail grænse skal være et tal.'; $wb['limit_mailquota_error_notint'] = 'E-mail kvote grænse skal være et tal.'; @@ -90,6 +93,7 @@ $wb['limit_aps_txt'] = 'Max. antal af APS instances'; $wb['limit_aps_error_notint'] = 'APS forekomst grænse skal være et tal.'; $wb['limit_domainmodule_txt'] = 'Domænemodul Begrænsning'; $wb['client_limits_txt'] = 'Kunde Begrænsninger'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/dk_reseller.lng b/interface/web/client/lib/lang/dk_reseller.lng index 12004df7619c4a0adfc66ecb2091e7da94fa06e8..816d9a35ef2768afe2ef23ac53b3b0b849f02eea 100644 --- a/interface/web/client/lib/lang/dk_reseller.lng +++ b/interface/web/client/lib/lang/dk_reseller.lng @@ -7,12 +7,14 @@ $wb['limit_mailaliasdomain_txt'] = 'Max. antal af domæne aliaser'; $wb['limit_mailforward_txt'] = 'Max. antal af e-mail forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. antal af e-mail catchall konti'; $wb['limit_mailrouting_txt'] = 'Max. antal af e-mail routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. antal af e-mail filtere'; $wb['limit_fetchmail_txt'] = 'Max. antal af fetchmail konti'; $wb['limit_mailquota_txt'] = 'Postboks kvota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. antal af spamfilter white/blacklist filtere'; $wb['limit_spamfilter_user_txt'] = 'Max. antal af spamfilter brugere'; $wb['limit_spamfilter_policy_txt'] = 'Max. antal af spamfilter politikker'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Standard Mailserver'; $wb['company_name_txt'] = 'Firma navn'; $wb['contact_name_txt'] = 'Kontakt navn'; @@ -37,6 +39,7 @@ $wb['company_txt'] = 'Firma'; $wb['title_txt'] = 'Titel'; $wb['firstname_txt'] = 'Fornavn'; $wb['surname_txt'] = 'Efternavn'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webkvote'; @@ -69,6 +72,7 @@ $wb['limit_mailalias_error_notint'] = 'E-mail alias grænse skal være et tal.'; $wb['limit_mailforward_error_notint'] = 'E-mail forward grænse skal være et tal.'; $wb['limit_mailcatchall_error_notint'] = 'E-mail catchall grænse skal være et tal.'; $wb['limit_mailrouting_error_notint'] = 'E-mail routing grænse skal være et tal.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'E-mail filter grænse skal være et tal.'; $wb['limit_mailfetchmail_error_notint'] = 'Fetchmail grænse skal være et tal.'; $wb['limit_mailquota_error_notint'] = 'E-mail kvote grænse skal være et tal.'; @@ -206,4 +210,3 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/el_client.lng b/interface/web/client/lib/lang/el_client.lng index 144e632ef6831253f7842319e0695bc36feed1bf..373c751a520fef1438b9127481716da653f92bf5 100644 --- a/interface/web/client/lib/lang/el_client.lng +++ b/interface/web/client/lib/lang/el_client.lng @@ -6,12 +6,14 @@ $wb['limit_mailaliasdomain_txt'] = 'ÎŒÏιο ψευδωνÏμων domain'; $wb['limit_mailforward_txt'] = 'ÎŒÏιο email forwarders'; $wb['limit_mailcatchall_txt'] = 'ÎŒÏιο λογαÏιασμών email catchall'; $wb['limit_mailrouting_txt'] = 'ÎŒÏιο δÏομολογήσεων των email'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'ÎŒÏιο φίλτÏων email'; $wb['limit_fetchmail_txt'] = 'ÎŒÏιο λογαÏιασμών fetchmail'; $wb['limit_mailquota_txt'] = 'ÎŒÏιο χώÏου θυÏίδας'; $wb['limit_spamfilter_wblist_txt'] = 'ÎŒÏιο spamfilter white / blacklist'; $wb['limit_spamfilter_user_txt'] = 'ÎŒÏιο χÏηστών spamfilter'; $wb['limit_spamfilter_policy_txt'] = 'ÎŒÏιο πολιτικών spamfilter'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Î ÏοκαθοÏισμÎνος Mailserver'; $wb['company_name_txt'] = 'Όνομα εταιÏίας'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -37,6 +39,7 @@ $wb['company_txt'] = 'ΕταιÏία'; $wb['title_txt'] = 'Τίτλος'; $wb['firstname_txt'] = 'Όνομα'; $wb['surname_txt'] = 'Επίθετο'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'ÎŒÏιο domain'; $wb['limit_subdomain_txt'] = 'ÎŒÏιο subdomain'; $wb['limit_webquota_txt'] = 'ÎŒÏιο χώÏου web'; @@ -70,6 +73,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'Το ÏŒÏιο των ÏˆÎµÏ…Î´Ï‰Î½Ï $wb['limit_mailforward_error_notint'] = 'Το ÏŒÏιο των email forward Ï€ÏÎπει να είναι αÏιθμός'; $wb['limit_mailcatchall_error_notint'] = 'Το ÏŒÏιο των email catchall Ï€ÏÎπει να είναι αÏιθμός'; $wb['limit_mailrouting_error_notint'] = 'Το ÏŒÏιο των δÏομολογήσεων email Ï€ÏÎπει να είναι αÏιθμός'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Το ÏŒÏιο των email filter Ï€ÏÎπει να είναι αÏιθμός'; $wb['limit_mailfetchmail_error_notint'] = 'Το ÏŒÏιο των fetchmail Ï€ÏÎπει να είναι αÏιθμός'; $wb['limit_mailquota_error_notint'] = 'Το ÏŒÏιο μεγÎθους των email Ï€ÏÎπει να είναι αÏιθμός'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/el_client_template.lng b/interface/web/client/lib/lang/el_client_template.lng index 91be0bcffd0ea72433646a1586091663f6119e16..bd0097b3dfe1b548ad6fba74daa26e0d04847637 100644 --- a/interface/web/client/lib/lang/el_client_template.lng +++ b/interface/web/client/lib/lang/el_client_template.lng @@ -8,12 +8,14 @@ $wb['limit_mailaliasdomain_txt'] = 'ÎŒÏιο ψευδωνÏμων domain'; $wb['limit_mailforward_txt'] = 'ÎŒÏιο email forwarders'; $wb['limit_mailcatchall_txt'] = 'ÎŒÏιο λογαÏιασμών email'; $wb['limit_mailrouting_txt'] = 'ÎŒÏιο δÏομολογήσεων email'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'ÎŒÏιο φίλτÏων email'; $wb['limit_fetchmail_txt'] = 'ÎŒÏιο λογαÏιασμών fetchmail'; $wb['limit_mailquota_txt'] = 'ÎŒÏιο θυÏίδας'; $wb['limit_spamfilter_wblist_txt'] = 'ÎŒÏιο spamfilter white / blacklist'; $wb['limit_spamfilter_user_txt'] = 'ÎŒÏιο χÏηστών spamfilter'; $wb['limit_spamfilter_policy_txt'] = 'ÎŒÏιο πολιτικών spamfilter'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'ÎŒÏιο domain'; $wb['limit_subdomain_txt'] = 'ÎŒÏιο subdomain'; $wb['limit_webquota_txt'] = 'ÎŒÏιο χώÏου web'; @@ -39,6 +41,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'Το ÏŒÏιο ψευδωνÏμων $wb['limit_mailforward_error_notint'] = 'Το ÏŒÏιο email forward Ï€ÏÎπει να είναι αÏιθμός.'; $wb['limit_mailcatchall_error_notint'] = 'Το ÏŒÏιο email catchall Ï€ÏÎπει να είναι αÏιθμός.'; $wb['limit_mailrouting_error_notint'] = 'Το ÏŒÏιο των δÏομολογήσεων email Ï€ÏÎπει να είναι αÏιθμός.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Το ÏŒÏιο φίλτÏων email Ï€ÏÎπει να είναι αÏιθμός.'; $wb['limit_mailfetchmail_error_notint'] = 'Το ÏŒÏιο fetchmail Ï€ÏÎπει να είναι αÏιθμός.'; $wb['limit_mailquota_error_notint'] = 'Το ÏŒÏιο χώÏου email Ï€ÏÎπει να είναι αÏιθμός.'; @@ -91,6 +94,7 @@ $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/el_reseller.lng b/interface/web/client/lib/lang/el_reseller.lng index 3a5e5159aa80a0dcf86a99c7d63a3b3278a2be71..512351c8f0374ae136a7bf642a753016b50fc2d9 100644 --- a/interface/web/client/lib/lang/el_reseller.lng +++ b/interface/web/client/lib/lang/el_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'ÎŒÏιο ψευδωνÏμων email'; $wb['limit_mailforward_txt'] = 'ÎŒÏιο email forwarders'; $wb['limit_mailcatchall_txt'] = 'ÎŒÏιο λογαÏιασμών email catchall'; $wb['limit_mailrouting_txt'] = 'ÎŒÏιο δÏομολογήσεων email'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'ÎŒÏιο φίλτÏων email'; $wb['limit_fetchmail_txt'] = 'ÎŒÏιο λογαÏιασμών fetchmail'; $wb['limit_mailquota_txt'] = 'ÎŒÏιο θυÏίδας'; $wb['limit_spamfilter_wblist_txt'] = 'ÎŒÏιο φίλτÏων spamfilter white / blacklist'; $wb['limit_spamfilter_user_txt'] = 'ÎŒÏιο χÏηστών spamfilter'; $wb['limit_spamfilter_policy_txt'] = 'ÎŒÏιο πολιτικών spamfilter'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Î ÏοκαθοÏισμÎνος Mailserver'; $wb['company_name_txt'] = 'Όνομα ΕταιÏίας'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'ΕταιÏία'; $wb['title_txt'] = 'Τίτλος'; $wb['firstname_txt'] = 'Όνομα'; $wb['surname_txt'] = 'Επίθετο'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'ÎŒÏιο Domain'; $wb['limit_subdomain_txt'] = 'ÎŒÏιο Subdomain'; $wb['limit_webquota_txt'] = 'ÎŒÏιο ΧώÏου Web'; @@ -66,6 +69,7 @@ $wb['limit_mailalias_error_notint'] = 'Το ÏŒÏιο ψευδωνÏμων email $wb['limit_mailforward_error_notint'] = 'Το ÏŒÏιο email forward Ï€ÏÎπει να είναι αÏιθμός.'; $wb['limit_mailcatchall_error_notint'] = 'Το ÏŒÏιο email catchall Ï€ÏÎπει να είναι αÏιθμός.'; $wb['limit_mailrouting_error_notint'] = 'Το ÏŒÏιο δÏομολογήσεων email Ï€ÏÎπει να είναι αÏιθμός.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Το ÏŒÏιο φίλτÏων email Ï€ÏÎπει να είναι αÏιθμός.'; $wb['limit_mailfetchmail_error_notint'] = 'Το ÏŒÏιο fetchmail Ï€ÏÎπει να είναι αÏιθμός.'; $wb['limit_mailquota_error_notint'] = 'Το ÏŒÏιο χώÏου email Ï€ÏÎπει να είναι αÏιθμός.'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng index a5991260c5eb63f3d27684aa258534992bebabec..acaafeb390e9ae7c62180f35fa615dbc49ad9870 100644 --- a/interface/web/client/lib/lang/en_client.lng +++ b/interface/web/client/lib/lang/en_client.lng @@ -7,12 +7,14 @@ $wb['limit_mailaliasdomain_txt'] = 'Max. number of domain aliases'; $wb['limit_mailforward_txt'] = 'Max. number of email forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. number of email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. number of email filters'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['company_name_txt'] = 'Company name'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -39,6 +41,7 @@ $wb['company_txt'] = 'Company'; $wb['title_txt'] = 'Title'; $wb['firstname_txt'] = 'Firstname'; $wb['surname_txt'] = 'Surname'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -73,6 +76,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'The email domain alias limit must b $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -204,4 +208,3 @@ $wb['email_error_empty'] = 'Email is empty'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/en_client_template.lng b/interface/web/client/lib/lang/en_client_template.lng index aa3dfdcb6e592b4b5013b1d26a05b6ce9e7ea60c..ad20fc5699b774a50588513119ad21c7ed9e9457 100644 --- a/interface/web/client/lib/lang/en_client_template.lng +++ b/interface/web/client/lib/lang/en_client_template.lng @@ -3,6 +3,7 @@ $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one $wb['template_type_txt'] = 'Template type'; $wb['template_name_txt'] = 'Template name'; $wb['limit_client_error_notint'] = 'Client Limit is not a number.'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['limit_maildomain_txt'] = 'Max. number of email domains'; $wb['limit_mailbox_txt'] = 'Max. number of mailboxes'; @@ -12,12 +13,14 @@ $wb['limit_mailmailinglist_txt'] = 'Max. number of mailing lists'; $wb['limit_mailforward_txt'] = 'Max. number of email forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. number of email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. number of email filters'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -47,6 +50,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'The email domain alias limit must b $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -125,4 +129,3 @@ $wb['xmpp_servers_txt'] = 'XMPP Servers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng index ec94cb017801a933a72b9fd8becf0c0cd2f1239f..d243c28cc17e6785121a63afc7c0d1e2c42a445f 100644 --- a/interface/web/client/lib/lang/en_reseller.lng +++ b/interface/web/client/lib/lang/en_reseller.lng @@ -7,12 +7,14 @@ $wb['limit_mailaliasdomain_txt'] = 'Max. number of domain aliases'; $wb['limit_mailforward_txt'] = 'Max. number of email forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. number of email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. number of email filters'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['company_name_txt'] = 'Company name'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -39,6 +41,7 @@ $wb['company_txt'] = 'Company'; $wb['title_txt'] = 'Title'; $wb['firstname_txt'] = 'Firstname'; $wb['surname_txt'] = 'Surname'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -73,6 +76,7 @@ $wb['limit_mailalias_error_notint'] = 'The email alias limit must be a number.'; $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -210,4 +214,3 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/es_client.lng b/interface/web/client/lib/lang/es_client.lng index eae85315b68df4ae44d6ba5bb314aaa901c0ec90..d9210b8ec36b1a97b2acafda4bc12684f1833d11 100644 --- a/interface/web/client/lib/lang/es_client.lng +++ b/interface/web/client/lib/lang/es_client.lng @@ -30,6 +30,7 @@ $wb['db_servers_txt'] = 'Servidores de base de datos'; $wb['db_servers_used'] = 'El servidor que está intentando borrar de este cliente está siendo utilizado como servidor de base de datos. Por favor asegúrese de que este servidor no esté siendo utilizado por este cliente antes de borrarlo.'; $wb['default_dbserver_txt'] = 'Servidor de base de datos por defecto'; $wb['default_dnsserver_txt'] = 'Servidor DNS por defecto'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Servidor de correo por defecto'; $wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundario por defecto'; $wb['default_webserver_txt'] = 'Servidor web por defecto'; @@ -79,6 +80,7 @@ $wb['limit_dns_slave_zone_error_notint'] = 'El lÃmite de zonas esclavas de dns $wb['limit_dns_slave_zone_txt'] = 'Cantidad máxima de zonas secundarias de DNS'; $wb['limit_dns_zone_error_notint'] = 'El lÃmite de zonas DNS debe ser un número.'; $wb['limit_dns_zone_txt'] = 'Cantidad máxima de zonas DNS'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_fetchmail_txt'] = 'Cantidad máx. de recogedores de correo'; $wb['limit_ftp_user_error_notint'] = 'El lÃmite de usuarios de FTP debe ser un número.'; @@ -105,6 +107,8 @@ $wb['limit_mailquota_error_notint'] = 'El lÃmite de cuota de correo debe ser un $wb['limit_mailquota_txt'] = 'Cuota de buzones de correo'; $wb['limit_mailrouting_error_notint'] = 'El lÃmite de enrutadores de correo debe ser un número.'; $wb['limit_mailrouting_txt'] = 'Cantidad máx. de enrutadores de correos'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_openvz_vm_error_notint'] = 'El lÃmite de servidores virtuales debe ser un número.'; $wb['limit_openvz_vm_template_id_txt'] = 'Forzar plantilla para servidor virtual'; $wb['limit_openvz_vm_txt'] = 'Cantidad máxima de servidores virtuales'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/es_client_template.lng b/interface/web/client/lib/lang/es_client_template.lng index 5c55b23f89e31b3e1c22d4f6b8b4e51624cb35a9..2099173c191006baf1c7d7e1fd0e3f191335c1fb 100644 --- a/interface/web/client/lib/lang/es_client_template.lng +++ b/interface/web/client/lib/lang/es_client_template.lng @@ -6,6 +6,7 @@ $wb['cron_job_limits_txt'] = 'LÃmites de trabajos programados'; $wb['database_limits_txt'] = 'LÃmites de base de datos'; $wb['default_dbserver_txt'] = 'Servidor de bases de datos por defecto'; $wb['default_dnsserver_txt'] = 'Servidor DNS por defecto'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Servidor de correo por defecto'; $wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundario por defecto'; $wb['default_webserver_txt'] = 'Servidor web por defecto'; @@ -35,6 +36,7 @@ $wb['limit_dns_slave_zone_error_notint'] = 'El lÃmite de zonas esclavas de dns $wb['limit_dns_slave_zone_txt'] = 'Cantidad máx. de zonas secundarias de DNS'; $wb['limit_dns_zone_error_notint'] = 'El lÃmite de zonas DNS debe ser un número.'; $wb['limit_dns_zone_txt'] = 'Cantidad máx. de zonas DNS'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_domainmodule_txt'] = 'LÃmites del módulo de dominio'; $wb['limit_fetchmail_txt'] = 'Cantidad máx. de recuperadores de correo'; @@ -62,6 +64,8 @@ $wb['limit_mailquota_error_notint'] = 'El lÃmite de cuota de correo debe ser un $wb['limit_mailquota_txt'] = 'Cuota de buzones de correo'; $wb['limit_mailrouting_error_notint'] = 'El lÃmite de enrutadores de correo debe ser un número.'; $wb['limit_mailrouting_txt'] = 'Cantidad máx. de enrutadores de correos'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_openvz_vm_error_notint'] = 'El lÃmite del servidor virtual debe ser un número.'; $wb['limit_openvz_vm_template_id_txt'] = 'Forzar plantilla de servidor virtual'; $wb['limit_openvz_vm_txt'] = 'Cantidad máx. de servidores virtuales'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/es_reseller.lng b/interface/web/client/lib/lang/es_reseller.lng index 6830c56cb83d4208755cb22c37e57ab1db7d267a..9fe710e6e327e33656ca2821ccc7a50507d1c11d 100644 --- a/interface/web/client/lib/lang/es_reseller.lng +++ b/interface/web/client/lib/lang/es_reseller.lng @@ -34,6 +34,7 @@ $wb['db_servers_txt'] = 'Servidor de base de datos'; $wb['db_servers_used'] = 'El servidor que está intentando borrar de este cliente está siendo utilizado como servidor de base de datos. Por favor asegúrese de que este servidor no esté siendo utilizado por este cliente antes de borrarlo.'; $wb['default_dbserver_txt'] = 'Servidor de base de datos por defecto'; $wb['default_dnsserver_txt'] = 'Servidor DNS por defecto'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Servidor de correo por defecto'; $wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundario por defecto'; $wb['default_webserver_txt'] = 'Servidor web por defecto'; @@ -85,6 +86,7 @@ $wb['limit_dns_slave_zone_error_notint'] = 'El lÃmite de zonas esclavas de dns $wb['limit_dns_slave_zone_txt'] = 'Cantidad máxima de zonas secundarias de DNS'; $wb['limit_dns_zone_error_notint'] = 'El lÃmite de zonas DNS debe ser un número.'; $wb['limit_dns_zone_txt'] = 'Cantidad máxima de zonas DNS'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_domainmodule_error_notint'] = 'El lÃmite del módulo de dominio debe ser un número.'; $wb['limit_domainmodule_txt'] = 'LÃmites del módulo de dominio'; @@ -112,6 +114,8 @@ $wb['limit_mailquota_error_notint'] = 'El lÃmite de cuota de correo debe ser un $wb['limit_mailquota_txt'] = 'Cuota de buzones de correo'; $wb['limit_mailrouting_error_notint'] = 'El lÃmite de enrutadores de correo debe ser un número.'; $wb['limit_mailrouting_txt'] = 'Cantidad máx. de enrutadores de correos'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_openvz_vm_error_notint'] = 'El lÃmite del servidor virtual debe ser un número.'; $wb['limit_openvz_vm_template_id_txt'] = 'Forzar plantilla de servidor virtual'; $wb['limit_openvz_vm_txt'] = 'Cantidad máx. de servidores virtuales'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/fi_client.lng b/interface/web/client/lib/lang/fi_client.lng index 7769af8b999f0984975ac089b3b6e2dd87b267fc..68058e1ab5a4c87365db95dc285519b21feb9216 100644 --- a/interface/web/client/lib/lang/fi_client.lng +++ b/interface/web/client/lib/lang/fi_client.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Postisoitteiden aliastunnuksien määrä'; $wb['limit_mailforward_txt'] = 'Edelleenlähetysosoitteiden määrä'; $wb['limit_mailcatchall_txt'] = 'Postiverkkotunnuksien Catchall-tilien määrä'; $wb['limit_mailrouting_txt'] = 'Postireititysten määrä'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Roskapostisuodattimien määrä'; $wb['limit_fetchmail_txt'] = 'Noudettavien postilaatikoiden määrä'; $wb['limit_mailquota_txt'] = 'Postilaatikon enimmäiskoko'; $wb['limit_spamfilter_wblist_txt'] = 'Roskapostisuodattimien määrä'; $wb['limit_spamfilter_user_txt'] = 'Roskapostisuodattimen käyttäjien määrä'; $wb['limit_spamfilter_policy_txt'] = 'Roskapostisuodattimen kohtelutapojen määrä'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Oletuspostipalvelin'; $wb['company_name_txt'] = 'Yrityksen nimi'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['title_txt'] = 'Otsikko'; $wb['firstname_txt'] = 'Etunimi'; $wb['surname_txt'] = 'Sukunimi'; $wb['limit_client_txt'] = 'Asiakkaiden määrä'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Verkkotunnuksien määrä'; $wb['limit_subdomain_txt'] = 'Aliverkkotunnuksien määrä'; $wb['limit_webquota_txt'] = 'Kotisivutila'; @@ -62,6 +65,7 @@ $wb['limit_mailalias_error_notint'] = 'Postin aliastunnuksien raja-arvon pitää $wb['limit_mailforward_error_notint'] = 'Postin edelleenlähetysten raja-arvon pitää olla numero.'; $wb['limit_mailcatchall_error_notint'] = 'Postiverkkotunnuksien catchall-tunnuksien raja-arvon pitää olla numero.'; $wb['limit_mailrouting_error_notint'] = 'Postireititysten raja-arvon pitää olla numero.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Roskapostisuodattimien raja-arvon pitää olla numero.'; $wb['limit_mailfetchmail_error_notint'] = 'Noudettavien postilaatikoiden raja-arvon pitää olla numero.'; $wb['limit_mailquota_error_notint'] = 'Postilaatikon koon raja-arvon pitää olla numero.'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/fi_client_template.lng b/interface/web/client/lib/lang/fi_client_template.lng index 70d9069664adfa3c5b20b0a37234c82e4ff418c3..46ce6e6a8d03a0a96d6964adf46253d8aa2820bb 100644 --- a/interface/web/client/lib/lang/fi_client_template.lng +++ b/interface/web/client/lib/lang/fi_client_template.lng @@ -7,6 +7,7 @@ $wb['limit_mailalias_txt'] = 'Postialiaksien määrä'; $wb['limit_mailforward_txt'] = 'Edelleenlähetysosoitteiden määrä'; $wb['limit_mailcatchall_txt'] = 'Postiverkkotunnuksien Catchall-tilien määrä'; $wb['limit_mailrouting_txt'] = 'Postireititysten määrä'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Roskapostisuodattimien määrä'; $wb['limit_fetchmail_txt'] = 'Noudettavien postilaatikoiden määrä'; $wb['limit_mailquota_txt'] = 'Postilaatikon koko'; @@ -14,6 +15,7 @@ $wb['limit_spamfilter_wblist_txt'] = 'Roskapostisuodattimen estolistojen määr $wb['limit_spamfilter_user_txt'] = 'Roskapostisuodattimen käyttäjien määrä'; $wb['limit_spamfilter_policy_txt'] = 'Roskapostisuodattimen kohtelutapojen määrä'; $wb['limit_client_txt'] = 'Asiakkaiden määrä'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Verkkotunnuksien raja'; $wb['limit_subdomain_txt'] = 'Aliverkkotunnuksien raja'; $wb['limit_webquota_txt'] = 'Kotisivutilan raja'; @@ -32,6 +34,7 @@ $wb['limit_mailalias_error_notint'] = 'Postialiaksien raja-arvon pitää olla nu $wb['limit_mailforward_error_notint'] = 'Edelleenlähetysosoitteiden raja-arvon pitää olla numero.'; $wb['limit_mailcatchall_error_notint'] = 'Catchall-tunnuksien raja-arvon pitää olla numero.'; $wb['limit_mailrouting_error_notint'] = 'Postireitityksien raja-arvon pitää olla numero.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Roskapostisuodattimien raja-arvon pitää olla numero.'; $wb['limit_mailfetchmail_error_notint'] = 'Noudettavien postilaatikoiden raja-arvon pitää olla numero.'; $wb['limit_mailquota_error_notint'] = 'Postilaatikon koon raja-arvon pitää olla numero.'; @@ -91,6 +94,7 @@ $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/fi_reseller.lng b/interface/web/client/lib/lang/fi_reseller.lng index fbd09f4b3e843c2a130ab8c9ac059b379bf681c7..5c16e702644e8586b5aff5795f7aac8c3e2857f8 100644 --- a/interface/web/client/lib/lang/fi_reseller.lng +++ b/interface/web/client/lib/lang/fi_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Sähköpostin aliastunnuksien enimmäismäärä'; $wb['limit_mailforward_txt'] = 'Edelleenlähetettävien sähköpostitunnuksien enimmäismäärä'; $wb['limit_mailcatchall_txt'] = 'Sähköpostin catchall-tilien enimmäismäärä'; $wb['limit_mailrouting_txt'] = 'Sähköpostireitityksien enimmäismäärä'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Sähköpostisuodattimien enimmäismäärä'; $wb['limit_fetchmail_txt'] = 'Noudettavien sähköpotilaatikoiden enimmäismäärä'; $wb['limit_mailquota_txt'] = 'Sähköpostilaatikoiden levytila'; $wb['limit_spamfilter_wblist_txt'] = 'Roskapostisuodatimen estetty / sallittu-suodattimien enimmäismäärä'; $wb['limit_spamfilter_user_txt'] = 'Roskapostisuodattimen käyttäjien enimmäismäärä'; $wb['limit_spamfilter_policy_txt'] = 'Roskapostin kohtelutapojen enimmäismäärä'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Oletuspostipalvelin'; $wb['company_name_txt'] = 'Yrityksen nimi'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'Yritys'; $wb['title_txt'] = 'Titteli'; $wb['firstname_txt'] = 'Etunimi'; $wb['surname_txt'] = 'Sukunimi'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Verkkotunnusraja'; $wb['limit_subdomain_txt'] = 'Aliverkkotunnusraja'; $wb['limit_webquota_txt'] = 'WWW-levytila'; @@ -65,6 +68,7 @@ $wb['limit_mailalias_error_notint'] = 'Sähköpostialiaksien rajan pitää olla $wb['limit_mailforward_error_notint'] = 'Sähköpostin edelleenlähetyksen rajan pitää olla numeerinen.'; $wb['limit_mailcatchall_error_notint'] = 'Catchall-tunnuksien rajan pitää olla numeerinen.'; $wb['limit_mailrouting_error_notint'] = 'Sähköpostireittien rajan pitää olla numeerinen.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Sähköpostisuodattimien rajan pitää olla numeerinen.'; $wb['limit_mailfetchmail_error_notint'] = 'Noudettavien laatikoiden rajan pitää olla numeerinen.'; $wb['limit_mailquota_error_notint'] = 'Sähköpostin levytilan rajan pitää olla numeerinen.'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/fr_client.lng b/interface/web/client/lib/lang/fr_client.lng index c3de724d93f39b704d75c9b21a5e3c08a743b35d..fc96c0d3195dab0b51bc75225e646395c2f14e03 100644 --- a/interface/web/client/lib/lang/fr_client.lng +++ b/interface/web/client/lib/lang/fr_client.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Nombre maximal d’alias d’e-mail'; $wb['limit_mailforward_txt'] = 'Nombre maximal de routeurs d’e-mail'; $wb['limit_mailcatchall_txt'] = 'Nombre maximal de comptes collecteurs'; $wb['limit_mailrouting_txt'] = 'Nombre maximal de routes d’e-mail'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Nombre maximal de filtres d’e-mails'; $wb['limit_fetchmail_txt'] = 'Nombre maximal de comptes récupérateur e-mail'; $wb['limit_mailquota_txt'] = 'Quota des boîtes aux lettres'; $wb['limit_spamfilter_wblist_txt'] = 'Nombre maximal de liste blanches/noires d’e-mail'; $wb['limit_spamfilter_user_txt'] = 'Nombre maximal d’utilisateurs du filtre antispam'; $wb['limit_spamfilter_policy_txt'] = 'Nombre maximal de règles du filtre antispam'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Serveur mail par défaut'; $wb['company_name_txt'] = 'Nom de l’entreprise'; $wb['contact_name_txt'] = 'Nom de contact'; @@ -36,6 +38,7 @@ $wb['title_txt'] = 'Titre'; $wb['firstname_txt'] = 'Prénom'; $wb['surname_txt'] = 'Nom'; $wb['limit_client_txt'] = 'Nombre maximal de clients'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Nombre maximal de domaines'; $wb['limit_subdomain_txt'] = 'Nombre maximal de sous-domaines'; $wb['limit_webquota_txt'] = 'Limite du quota web'; @@ -61,6 +64,7 @@ $wb['limit_mailalias_error_notint'] = 'La limite d’alias d’e-mail doit être $wb['limit_mailforward_error_notint'] = 'La limite de routeurs d’e-mail doit être un nombre.'; $wb['limit_mailcatchall_error_notint'] = 'La limite de comptes collecteurs doit être un nombre.'; $wb['limit_mailrouting_error_notint'] = 'La limite de routes d’e-mail doit être un nombre.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'La limite de filtres d’e-mail doit être un nombre.'; $wb['limit_mailfetchmail_error_notint'] = 'La limite de comptes récupérateur e-mail doit être un nombre.'; $wb['limit_mailquota_error_notint'] = 'La limite du quota des boîtes d’e-mail doit être un nombre.'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/fr_client_template.lng b/interface/web/client/lib/lang/fr_client_template.lng index b81788c0d441ba274b6823c581a80c553d39ad11..33548deba4979d017765df6fd9a6eebbe787c742 100644 --- a/interface/web/client/lib/lang/fr_client_template.lng +++ b/interface/web/client/lib/lang/fr_client_template.lng @@ -7,6 +7,7 @@ $wb['limit_mailalias_txt'] = 'Nombre maximal d’alias d’e-mail'; $wb['limit_mailforward_txt'] = 'Nombre maximal de routeurs d’e-mail'; $wb['limit_mailcatchall_txt'] = 'Nombre maximal de comptes collecteurs'; $wb['limit_mailrouting_txt'] = 'Nombre maximal de routes d’e-mails'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Nombre maximal de filtres d’e-mails'; $wb['limit_fetchmail_txt'] = 'Nombre maximal de comptes récupérateur e-mail'; $wb['limit_mailquota_txt'] = 'Quota des boîtes aux lettres'; @@ -14,6 +15,7 @@ $wb['limit_spamfilter_wblist_txt'] = 'Nombre maximal de liste blanches/noires d $wb['limit_spamfilter_user_txt'] = 'Nombre maximal d’utilisateurs du filtre antispam'; $wb['limit_spamfilter_policy_txt'] = 'Nombre maximal de règles du filtre antispam'; $wb['limit_client_txt'] = 'Nombre maximal de clients'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Nombre maximal de domaines'; $wb['limit_subdomain_txt'] = 'Nombre maximal de sous-domaines'; $wb['limit_webquota_txt'] = 'Limite du quota web'; @@ -31,6 +33,7 @@ $wb['limit_mailalias_error_notint'] = 'La limite d’alias d’e-mail doit être $wb['limit_mailforward_error_notint'] = 'La limite de routeurs d’e-mail doit être un nombre.'; $wb['limit_mailcatchall_error_notint'] = 'La limite de comptes collecteurs doit être un nombre.'; $wb['limit_mailrouting_error_notint'] = 'La limite de routes d’e-mail doit être un nombre.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'La limite de filtres d’e-mail doit être un nombre.'; $wb['limit_mailfetchmail_error_notint'] = 'La limite de comptes récupérateur e-mail doit être un nombre.'; $wb['limit_mailquota_error_notint'] = 'La limite du quota des boîtes d’e-mail doit être un nombre.'; @@ -90,6 +93,7 @@ $wb['limit_aps_txt'] = 'Nombre max d’instances APS'; $wb['limit_aps_error_notint'] = 'La limite d’instances APS doit être un nombre.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/fr_reseller.lng b/interface/web/client/lib/lang/fr_reseller.lng index 76d44cb324ea63af17073ef438498e6c696d6ee8..867e9d5da06ff6320e8389d42f9bb41934679317 100644 --- a/interface/web/client/lib/lang/fr_reseller.lng +++ b/interface/web/client/lib/lang/fr_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Nombre maximal d’alias d’e-mail'; $wb['limit_mailforward_txt'] = 'Nombre maximal de routeurs d’e-mail'; $wb['limit_mailcatchall_txt'] = 'Nombre maximal de comptes collecteurs'; $wb['limit_mailrouting_txt'] = 'Nombre maximal de routes d’e-mails'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Nombre maximal de filtres d’e-mails'; $wb['limit_fetchmail_txt'] = 'Nombre maximal de comptes récupérateur e-mail'; $wb['limit_mailquota_txt'] = 'Quota des boîtes aux lettres'; $wb['limit_spamfilter_wblist_txt'] = 'Nombre maximal de liste blanches/noires d’e-mails'; $wb['limit_spamfilter_user_txt'] = 'Nombre maximal d’utilisateurs du filtre antispam'; $wb['limit_spamfilter_policy_txt'] = 'Nombre maximal de règles du filtre antispam'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Serveur mail par défaut'; $wb['company_name_txt'] = 'Nom de l’entreprise'; $wb['contact_name_txt'] = 'Nom de contact'; @@ -35,6 +37,7 @@ $wb['company_txt'] = 'Entreprise'; $wb['title_txt'] = 'Titre'; $wb['firstname_txt'] = 'Prénom'; $wb['surname_txt'] = 'Nom'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Nombre maximal de domaines'; $wb['limit_subdomain_txt'] = 'Nombre maximal de sous-domaines'; $wb['limit_webquota_txt'] = 'Limite du quota web'; @@ -64,6 +67,7 @@ $wb['limit_mailalias_error_notint'] = 'La limite d’alias d’e-mail doit être $wb['limit_mailforward_error_notint'] = 'La limite de routeurs d’e-mail doit être un nombre.'; $wb['limit_mailcatchall_error_notint'] = 'La limite de comptes collecteurs doit être un nombre.'; $wb['limit_mailrouting_error_notint'] = 'La limite de routes d’e-mail doit être un nombre.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'La limite de filtres d’e-mail doit être un nombre.'; $wb['limit_mailfetchmail_error_notint'] = 'La limite de comptes récupérateur e-mail doit être un nombre.'; $wb['limit_mailquota_error_notint'] = 'La limite du quota des boîtes d’e-mail doit être un nombre.'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/hr_client.lng b/interface/web/client/lib/lang/hr_client.lng index 4d16bac0cb308c935300d320577893d89bf34c5f..ed00a5c5202ee427218c3f7dfbc3af6a54f7421c 100644 --- a/interface/web/client/lib/lang/hr_client.lng +++ b/interface/web/client/lib/lang/hr_client.lng @@ -6,12 +6,14 @@ $wb['limit_mailaliasdomain_txt'] = 'Maksimalan broj aliasa email domena'; $wb['limit_mailforward_txt'] = 'Maksimalan broj email forwardera'; $wb['limit_mailcatchall_txt'] = 'Maksimalan broj email catchall raÄuna'; $wb['limit_mailrouting_txt'] = 'Maksimalan broj email ruta'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Maksimalan broj email filtera'; $wb['limit_fetchmail_txt'] = 'Maksimalan broj fetchmail raÄuna'; $wb['limit_mailquota_txt'] = 'VeliÄina mailboxa'; $wb['limit_spamfilter_wblist_txt'] = 'Maksimalan broj spamfilter white / blacklist filtera'; $wb['limit_spamfilter_user_txt'] = 'Maksimalan broj spamfilter korisnika'; $wb['limit_spamfilter_policy_txt'] = 'Maksimalan broj spamfilter pravila'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Izaberi email server'; $wb['company_name_txt'] = 'Poduzeće'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -37,6 +39,7 @@ $wb['company_txt'] = 'Poduzeće'; $wb['title_txt'] = 'Naziv'; $wb['firstname_txt'] = 'Ime'; $wb['surname_txt'] = 'Prezime'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domena'; $wb['limit_subdomain_txt'] = 'limit_poddomena'; $wb['limit_webquota_txt'] = 'limit_prostora'; @@ -70,6 +73,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'Maksimalan broj email alias domena $wb['limit_mailforward_error_notint'] = 'Limit email forwarda mora biti znamenka.'; $wb['limit_mailcatchall_error_notint'] = 'Limit email catchalla mora biti znamenka.'; $wb['limit_mailrouting_error_notint'] = 'Limit email ruta mora biti znamenka.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Limit email filtera mora biti znamenka.'; $wb['limit_mailfetchmail_error_notint'] = 'Limit fetchmaila mora biti znamenka.'; $wb['limit_mailquota_error_notint'] = 'VeliÄina mailboxa mora biti znamenka.'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/hr_client_template.lng b/interface/web/client/lib/lang/hr_client_template.lng index 12fabbe72308f34821d23d9ff1412d81ed93f6ee..ce5b3e8ebc874b95612da325d18f4a3add305157 100644 --- a/interface/web/client/lib/lang/hr_client_template.lng +++ b/interface/web/client/lib/lang/hr_client_template.lng @@ -8,12 +8,14 @@ $wb['limit_mailaliasdomain_txt'] = 'Maksimalan broj aliasa email domena'; $wb['limit_mailforward_txt'] = 'Maksimalan broj email forwardera'; $wb['limit_mailcatchall_txt'] = 'Maksimalan broj email catchall raÄuna'; $wb['limit_mailrouting_txt'] = 'Maksimalan broj email ruta'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Maksimalan broj email filtera'; $wb['limit_fetchmail_txt'] = 'Maksimalan broj fetchmail raÄuna'; $wb['limit_mailquota_txt'] = 'VeliÄina mailboxa'; $wb['limit_spamfilter_wblist_txt'] = 'Maksimalan broj spamfilter white / blacklist filtera'; $wb['limit_spamfilter_user_txt'] = 'Maksimalan broj spamfilter korisnika'; $wb['limit_spamfilter_policy_txt'] = 'Maksimalan broj spamfilter pravila'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domena'; $wb['limit_subdomain_txt'] = 'limit_poddomena'; $wb['limit_webquota_txt'] = 'limit_prostora'; @@ -39,6 +41,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'Maksimalan broj email alias domena $wb['limit_mailforward_error_notint'] = 'Limit email forwarda mora biti znamenka.'; $wb['limit_mailcatchall_error_notint'] = 'Limit email catchalla mora biti znamenka.'; $wb['limit_mailrouting_error_notint'] = 'Limit email ruta mora biti znamenka.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Limit email filtera mora biti znamenka.'; $wb['limit_mailfetchmail_error_notint'] = 'Limit fetchmaila mora biti znamenka.'; $wb['limit_mailquota_error_notint'] = 'VeliÄina mailboxa mora biti znamenka.'; @@ -91,6 +94,7 @@ $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/hr_reseller.lng b/interface/web/client/lib/lang/hr_reseller.lng index d4b9f58eebb33c1cf54ced71aa2fd3ef168fbcd5..aaedd0b1c5e35e98b5fef8510a81839e0e5da42d 100644 --- a/interface/web/client/lib/lang/hr_reseller.lng +++ b/interface/web/client/lib/lang/hr_reseller.lng @@ -6,12 +6,14 @@ $wb['limit_mailaliasdomain_txt'] = 'Maksimalan broj aliasa email domena'; $wb['limit_mailforward_txt'] = 'Maksimalan broj email forwardera'; $wb['limit_mailcatchall_txt'] = 'Maksimalan broj email catchall raÄuna'; $wb['limit_mailrouting_txt'] = 'Maksimalan broj email ruta'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Maksimalan broj email filtera'; $wb['limit_fetchmail_txt'] = 'Maksimalan broj fetchmail raÄuna'; $wb['limit_mailquota_txt'] = 'VeliÄina mailboxa'; $wb['limit_spamfilter_wblist_txt'] = 'Maksimalan broj spamfilter white / blacklist filtera'; $wb['limit_spamfilter_user_txt'] = 'Maksimalan broj spamfilter korisnika'; $wb['limit_spamfilter_policy_txt'] = 'Maksimalan broj spamfilter pravila'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Izaberi email server'; $wb['company_name_txt'] = 'Poduzeće'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -37,6 +39,7 @@ $wb['company_txt'] = 'Poduzeće'; $wb['title_txt'] = 'Naziv'; $wb['firstname_txt'] = 'Ime'; $wb['surname_txt'] = 'Prezime'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domena'; $wb['limit_subdomain_txt'] = 'limit_poddomena'; $wb['limit_webquota_txt'] = 'limit_prostora'; @@ -69,6 +72,7 @@ $wb['limit_mailalias_error_notint'] = 'Maksimalan broj email aliasa mora biti zn $wb['limit_mailforward_error_notint'] = 'Limit email forwarda mora biti znamenka.'; $wb['limit_mailcatchall_error_notint'] = 'Limit email catchalla mora biti znamenka.'; $wb['limit_mailrouting_error_notint'] = 'Limit email ruta mora biti znamenka.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Limit email filtera mora biti znamenka.'; $wb['limit_mailfetchmail_error_notint'] = 'Limit fetchmaila mora biti znamenka.'; $wb['limit_mailquota_error_notint'] = 'VeliÄina mailboxa mora biti znamenka.'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/hu_client.lng b/interface/web/client/lib/lang/hu_client.lng index b11e03273ec3673f8e225372f1899806b8da98b5..9e6ad94a7b80c65bae8def8c4b09e87e773bab5a 100644 --- a/interface/web/client/lib/lang/hu_client.lng +++ b/interface/web/client/lib/lang/hu_client.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Maximálisan létrehozható email alias-ok száma' $wb['limit_mailforward_txt'] = 'Max. number of email forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. number of email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. number of email filters'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox korlát'; $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Alap levelezÅ‘ szerver'; $wb['company_name_txt'] = 'Cégnév'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['title_txt'] = 'Titulus'; $wb['firstname_txt'] = 'Keresztnév'; $wb['surname_txt'] = 'Vezetéknév'; $wb['limit_client_txt'] = 'Max. number of Clients'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -62,6 +65,7 @@ $wb['limit_mailalias_error_notint'] = 'The email alias limit must be a number.'; $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/hu_client_template.lng b/interface/web/client/lib/lang/hu_client_template.lng index 3df432a6612cdc53ea3cd5dfce17e2574bc6fd68..74d37e7589486816faa3462e85e7ae1257c5cf47 100644 --- a/interface/web/client/lib/lang/hu_client_template.lng +++ b/interface/web/client/lib/lang/hu_client_template.lng @@ -7,12 +7,14 @@ $wb['limit_mailalias_txt'] = 'Max. number of email aliases'; $wb['limit_mailforward_txt'] = 'Max. number of email forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. number of email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. number of email filters'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -32,6 +34,7 @@ $wb['limit_mailalias_error_notint'] = 'The email alias limit must be a number.'; $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -91,6 +94,7 @@ $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/hu_reseller.lng b/interface/web/client/lib/lang/hu_reseller.lng index 76755a112b1a13b5bf5445a69a639888ce0b70c5..26fffbc7e35a00eece5f249f943667fe516cea11 100644 --- a/interface/web/client/lib/lang/hu_reseller.lng +++ b/interface/web/client/lib/lang/hu_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Max. number of email aliases'; $wb['limit_mailforward_txt'] = 'Max. number of email forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. number of email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. number of email filters'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['company_name_txt'] = 'Cégnév'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'Cég'; $wb['title_txt'] = 'Titulus'; $wb['firstname_txt'] = 'Keresztnév'; $wb['surname_txt'] = 'Vezetéknév'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -66,6 +69,7 @@ $wb['limit_mailalias_error_notint'] = 'The email alias limit must be a number.'; $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/id_client.lng b/interface/web/client/lib/lang/id_client.lng index df858ebdfaace28cfd2dbbef8c5992070a5c65cf..47f8971b1fdec6b1dd36c9ce145319b19cffcd7d 100644 --- a/interface/web/client/lib/lang/id_client.lng +++ b/interface/web/client/lib/lang/id_client.lng @@ -6,12 +6,14 @@ $wb['limit_mailaliasdomain_txt'] = 'Jumlah maks alias domain'; $wb['limit_mailforward_txt'] = 'Jumlah maks forwarder email'; $wb['limit_mailcatchall_txt'] = 'Jumlah maks akun catchall email'; $wb['limit_mailrouting_txt'] = 'Jumlah maks rute email'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Jumlah maks penyaringan email'; $wb['limit_fetchmail_txt'] = 'Jumlah maks akun fetchmail'; $wb['limit_mailquota_txt'] = 'Kuota Mailbox'; $wb['limit_spamfilter_wblist_txt'] = 'Jumlah maks penyaringan whitelist/blacklist spamfilter'; $wb['limit_spamfilter_user_txt'] = 'Jumlah maks pengguna spamfilter'; $wb['limit_spamfilter_policy_txt'] = 'Jumlah maks kebijakan spamfilter'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Server Mail Default'; $wb['company_name_txt'] = 'Nama Perusahaan'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -37,6 +39,7 @@ $wb['company_txt'] = 'Perusahaan'; $wb['title_txt'] = 'Judul'; $wb['firstname_txt'] = 'Nama depan'; $wb['surname_txt'] = 'Nama belakang'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'batasan domain'; $wb['limit_subdomain_txt'] = 'batasan subdomain'; $wb['limit_webquota_txt'] = 'batasan kuota web'; @@ -67,6 +70,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'Batasan alias domain email harus be $wb['limit_mailforward_error_notint'] = 'Batasan forward email harus berupa angka.'; $wb['limit_mailcatchall_error_notint'] = 'Batasan catchall email harus berupa angka.'; $wb['limit_mailrouting_error_notint'] = 'Batasan routing email harus berupa angka.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Batasan penyaringan email harus berupa angka.'; $wb['limit_mailfetchmail_error_notint'] = 'Batasan fetchmail harus berupa angka.'; $wb['limit_mailquota_error_notint'] = 'Batasan kuota email harus berupa angka.'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/id_client_template.lng b/interface/web/client/lib/lang/id_client_template.lng index 57c55be57648a7db16ef9827d22a386b1de2a7d0..b4367236f73c9f09c1a35c92490d8867737184b1 100644 --- a/interface/web/client/lib/lang/id_client_template.lng +++ b/interface/web/client/lib/lang/id_client_template.lng @@ -8,12 +8,14 @@ $wb['limit_mailaliasdomain_txt'] = 'Jumlah maks alias domain'; $wb['limit_mailforward_txt'] = 'Jumlah maks forwarder email'; $wb['limit_mailcatchall_txt'] = 'Jumlah maks akun catchall email'; $wb['limit_mailrouting_txt'] = 'Jumlah maks rute email'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Jumlah maks filter email'; $wb['limit_fetchmail_txt'] = 'Jumlah maks akun fetchmail'; $wb['limit_mailquota_txt'] = 'Kuota Mailbox'; $wb['limit_spamfilter_wblist_txt'] = 'Jumlah maks filter white/blacklist spamfilter'; $wb['limit_spamfilter_user_txt'] = 'Jumlah maks pengguna spamfilter'; $wb['limit_spamfilter_policy_txt'] = 'Jumlah maks kebijakan spamfilter'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'batasan domain'; $wb['limit_subdomain_txt'] = 'batasan subdomain'; $wb['limit_webquota_txt'] = 'batasan kuota web'; @@ -36,6 +38,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'Batasan alias domain email harus be $wb['limit_mailforward_error_notint'] = 'Batasan forward email harus berupa angka.'; $wb['limit_mailcatchall_error_notint'] = 'Batasan catchall email harus berupa angka.'; $wb['limit_mailrouting_error_notint'] = 'Batasan routing email harus berupa angka.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Batasan penyaringan email harus berupa angka.'; $wb['limit_mailfetchmail_error_notint'] = 'Batasan fetchmail harus berupa angka.'; $wb['limit_mailquota_error_notint'] = 'Batasan kuota email harus berupa angka.'; @@ -91,6 +94,7 @@ $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/id_reseller.lng b/interface/web/client/lib/lang/id_reseller.lng index e639f4929e6bb41a7dc98d9740eb2bf31237cdf7..01195a244c3eb45d6fad9134d7d3abd44e452281 100644 --- a/interface/web/client/lib/lang/id_reseller.lng +++ b/interface/web/client/lib/lang/id_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Jumlah maks alias email'; $wb['limit_mailforward_txt'] = 'Jumlah maks forwarder email'; $wb['limit_mailcatchall_txt'] = 'Jumlah maks akun catchall email'; $wb['limit_mailrouting_txt'] = 'Jumlah maks rute email'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Jumlah maks penyaringan email'; $wb['limit_fetchmail_txt'] = 'Jumlah maks akun fetchmail'; $wb['limit_mailquota_txt'] = 'Kuota Mailbox'; $wb['limit_spamfilter_wblist_txt'] = 'Jumlah maks penyaringan whitelist/blacklist spamfilter'; $wb['limit_spamfilter_user_txt'] = 'Jumlah maks pengguna spamfilter'; $wb['limit_spamfilter_policy_txt'] = 'Jumlah maks kebijakan spamfilter'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Server Mail Default'; $wb['company_name_txt'] = 'Nama Perusahaan'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'Perusahaan'; $wb['title_txt'] = 'Judul'; $wb['firstname_txt'] = 'Nama Depan'; $wb['surname_txt'] = 'Nama Belakang'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'batasan domain'; $wb['limit_subdomain_txt'] = 'batasan subdomain'; $wb['limit_webquota_txt'] = 'batasan kuota web'; @@ -65,6 +68,7 @@ $wb['limit_mailalias_error_notint'] = 'Batasan alias email harus berupa angka.'; $wb['limit_mailforward_error_notint'] = 'Batasan forward email harus berupa angka.'; $wb['limit_mailcatchall_error_notint'] = 'Batasan catchall email harus berupa angka.'; $wb['limit_mailrouting_error_notint'] = 'Batasan routing email harus berupa angka.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Batasan penyaringan email harus berupa angka.'; $wb['limit_mailfetchmail_error_notint'] = 'Batasan fetchmail harus berupa angka.'; $wb['limit_mailquota_error_notint'] = 'Batasan kuota email harus berupa angka.'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/it_client.lng b/interface/web/client/lib/lang/it_client.lng index 8442ace734cb26810b89cda156fd43d86bcabd44..883bb424871254d74866fe486141122264874e75 100644 --- a/interface/web/client/lib/lang/it_client.lng +++ b/interface/web/client/lib/lang/it_client.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Numero massimo di aliases di posta'; $wb['limit_mailforward_txt'] = 'Numero massimo di forwarders di posta'; $wb['limit_mailcatchall_txt'] = 'Numero massimo di catchall accounts'; $wb['limit_mailrouting_txt'] = 'Numero massimo di email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Numero massimo di email filters'; $wb['limit_fetchmail_txt'] = 'Numero massimo di fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Limite quota mailbox'; $wb['limit_spamfilter_wblist_txt'] = 'Numero massimo di filtri spamfilter white / blacklist'; $wb['limit_spamfilter_user_txt'] = 'Numero massimo di utenti spamfilter'; $wb['limit_spamfilter_policy_txt'] = 'Numero massimo di policy per spamfilter'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Server di posta predefinito'; $wb['company_name_txt'] = 'Nome Azienda'; $wb['contact_name_txt'] = 'Nome contatto'; @@ -35,6 +37,7 @@ $wb['title_txt'] = 'Titolo'; $wb['firstname_txt'] = 'Nome'; $wb['surname_txt'] = 'Cognome'; $wb['limit_client_txt'] = 'Numero massimo clienti'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -61,6 +64,7 @@ $wb['limit_mailalias_error_notint'] = 'Il limite di email alias deve essere un n $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/it_client_template.lng b/interface/web/client/lib/lang/it_client_template.lng index 40ef74de160797b3534a5da9a2c5004fb32dfe57..119d5d28e50ecf4b47205051a20479eb24b6cf9b 100644 --- a/interface/web/client/lib/lang/it_client_template.lng +++ b/interface/web/client/lib/lang/it_client_template.lng @@ -7,6 +7,7 @@ $wb['limit_mailalias_txt'] = 'Num. massimo alias email'; $wb['limit_mailforward_txt'] = 'Num. massimo inoltri email'; $wb['limit_mailcatchall_txt'] = 'Num. massimo account email catchall'; $wb['limit_mailrouting_txt'] = 'Num. massimo routes email'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Num. massimo filtri email'; $wb['limit_fetchmail_txt'] = 'Num. massimo account fetchmail'; $wb['limit_mailquota_txt'] = 'Quota caselle di posta'; @@ -14,6 +15,7 @@ $wb['limit_spamfilter_wblist_txt'] = 'Num. massimo filtri spam white / blacklist $wb['limit_spamfilter_user_txt'] = 'Num. massimo utenti spamfilter'; $wb['limit_spamfilter_policy_txt'] = 'Num. massimo policys spamfilter'; $wb['limit_client_txt'] = 'Num. massimo clienti'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -32,6 +34,7 @@ $wb['limit_mailalias_error_notint'] = 'Il limite alias email devessere un numero $wb['limit_mailforward_error_notint'] = 'Il limite inoltro email devessere un numero.'; $wb['limit_mailcatchall_error_notint'] = 'Il limite catchall email devessere un numero.'; $wb['limit_mailrouting_error_notint'] = 'Il limite routing email devessere un numero .'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Il limite filtri email devessere un numero.'; $wb['limit_mailfetchmail_error_notint'] = 'Il limite fetchmail devessere un numero.'; $wb['limit_mailquota_error_notint'] = 'Il limite quota email devessere un numero.'; @@ -90,6 +93,7 @@ $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; $wb['template_name_txt'] = 'Template name'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/it_reseller.lng b/interface/web/client/lib/lang/it_reseller.lng index 8b5d7194273565494c01f22656827eef21ee9a1c..ca1f01467d2ee4513fb2425ac87c767eaae50659 100644 --- a/interface/web/client/lib/lang/it_reseller.lng +++ b/interface/web/client/lib/lang/it_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Max. number of email aliases'; $wb['limit_mailforward_txt'] = 'Max. number of email forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. number of email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. number of email filters'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['company_name_txt'] = 'Company name'; $wb['contact_name_txt'] = 'Contact name'; @@ -35,6 +37,7 @@ $wb['company_txt'] = 'Azienda'; $wb['title_txt'] = 'Titolo'; $wb['firstname_txt'] = 'Nome'; $wb['surname_txt'] = 'Cognome'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -65,6 +68,7 @@ $wb['limit_mailalias_error_notint'] = 'The email alias limit must be a number.'; $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/ja_client.lng b/interface/web/client/lib/lang/ja_client.lng index de4642d72d88f3f4c29d9544cfb0526793ab8471..4639125717189e1184ce60564d6cf5ea501b7eca 100644 --- a/interface/web/client/lib/lang/ja_client.lng +++ b/interface/web/client/lib/lang/ja_client.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'メールエイリアスã®æœ€å¤§æ•°'; $wb['limit_mailforward_txt'] = 'メールフォワードã®æœ€å¤§æ•°'; $wb['limit_mailcatchall_txt'] = 'ã‚ャッãƒã‚ªãƒ¼ãƒ«ãƒ»ãƒ¡ãƒ¼ãƒ«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®æœ€å¤§æ•°'; $wb['limit_mailrouting_txt'] = 'メールé…é€çµŒè·¯ã®æœ€å¤§æ•°'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'メールフィルターã®æœ€å¤§æ•°'; $wb['limit_fetchmail_txt'] = 'fetchmailアカウントã®æœ€å¤§æ•°'; $wb['limit_mailquota_txt'] = 'メールボックスã®å®¹é‡'; $wb['limit_spamfilter_wblist_txt'] = '迷惑メールã®ãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆã€ãƒ–ラックリストフィルターã®æœ€å¤§æ•°'; $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = '迷惑メールフィルタã®ãƒãƒªã‚·ãƒ¼ã®æœ€å¤§æ•°'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'デフォルトã®ãƒ¡ãƒ¼ãƒ«ã‚µãƒ¼ãƒãƒ¼'; $wb['company_name_txt'] = '社å'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = '社å'; $wb['title_txt'] = 'å½¹è·'; $wb['firstname_txt'] = 'å'; $wb['surname_txt'] = '姓'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -66,6 +69,7 @@ $wb['limit_mailalias_error_notint'] = 'メールエイリアスã®æœ€å¤§æ•°ã¯ $wb['limit_mailforward_error_notint'] = 'メールフォワードã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; $wb['limit_mailcatchall_error_notint'] = 'ã‚ャッãƒã‚ªãƒ¼ãƒ«ãƒ»ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; $wb['limit_mailrouting_error_notint'] = 'メールã®é…é€çµŒè·¯ã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'メールフィルターã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; $wb['limit_mailfetchmail_error_notint'] = 'fetchmailアカウントã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; $wb['limit_mailquota_error_notint'] = 'メールボックスã®æœ€å¤§å®¹é‡ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/ja_client_template.lng b/interface/web/client/lib/lang/ja_client_template.lng index 7381465d66bd68c4a957412ea0531e964974828e..a871199051c506aaccf96f3111b827c16bbc9d18 100644 --- a/interface/web/client/lib/lang/ja_client_template.lng +++ b/interface/web/client/lib/lang/ja_client_template.lng @@ -7,12 +7,14 @@ $wb['limit_mailalias_txt'] = 'メールエイリアスã®æœ€å¤§æ•°'; $wb['limit_mailforward_txt'] = 'メールフォワードã®æœ€å¤§æ•°'; $wb['limit_mailcatchall_txt'] = 'ã‚ャッãƒã‚ªãƒ¼ãƒ«ãƒ»ãƒ¡ãƒ¼ãƒ«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®æœ€å¤§æ•°'; $wb['limit_mailrouting_txt'] = 'メールé…é€çµŒè·¯ã®æœ€å¤§æ•°'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'メールフィルターã®æœ€å¤§æ•°'; $wb['limit_fetchmail_txt'] = 'fetchmailアカウントã®æœ€å¤§æ•°'; $wb['limit_mailquota_txt'] = 'メールボックスã®å®¹é‡'; $wb['limit_spamfilter_wblist_txt'] = '迷惑メールã®ãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆã€ãƒ–ラックリストフィルターã®æœ€å¤§æ•°'; $wb['limit_spamfilter_user_txt'] = 'スパムフィルターユーザーã®æœ€å¤§æ•°'; $wb['limit_spamfilter_policy_txt'] = '迷惑メールフィルタã®ãƒãƒªã‚·ãƒ¼ã®æœ€å¤§æ•°'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -35,6 +37,7 @@ $wb['limit_mailalias_error_notint'] = 'メールエイリアスã®æœ€å¤§æ•°ã¯ $wb['limit_mailforward_error_notint'] = 'メールフォワードã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; $wb['limit_mailcatchall_error_notint'] = 'ã‚ャッãƒã‚ªãƒ¼ãƒ«ãƒ»ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; $wb['limit_mailrouting_error_notint'] = 'メールã®é…é€çµŒè·¯ã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'メールフィルターã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; $wb['limit_mailfetchmail_error_notint'] = 'fetchmailアカウントã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; $wb['limit_mailquota_error_notint'] = 'メールボックスã®æœ€å¤§å®¹é‡ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; @@ -91,6 +94,7 @@ $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/ja_reseller.lng b/interface/web/client/lib/lang/ja_reseller.lng index a4df95b8b9aebe8593d2b08be2cfa3c7d9cbb8d0..041174da1bffb74ca02a52c37cf03d27a866143a 100644 --- a/interface/web/client/lib/lang/ja_reseller.lng +++ b/interface/web/client/lib/lang/ja_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'メールエイリアスã®æœ€å¤§æ•°'; $wb['limit_mailforward_txt'] = 'メールフォワードã®æœ€å¤§æ•°'; $wb['limit_mailcatchall_txt'] = 'ã‚ャッãƒã‚ªãƒ¼ãƒ«ãƒ»ãƒ¡ãƒ¼ãƒ«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®æœ€å¤§æ•°'; $wb['limit_mailrouting_txt'] = 'メールé…é€çµŒè·¯ã®æœ€å¤§æ•°'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'メールフィルターã®æœ€å¤§æ•°'; $wb['limit_fetchmail_txt'] = 'Fetchmail アカウントã®æœ€å¤§æ•°'; $wb['limit_mailquota_txt'] = 'メールボックスã®å®¹é‡'; $wb['limit_spamfilter_wblist_txt'] = 'スパムメールã®ãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆã€ãƒ–ラックリストフィルターã®æœ€å¤§æ•°'; $wb['limit_spamfilter_user_txt'] = 'スパムフィルターユーザーã®æœ€å¤§æ•°'; $wb['limit_spamfilter_policy_txt'] = 'スパムフィルターãƒãƒªã‚·ãƒ¼ã®æœ€å¤§æ•°'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'デフォルトã®ãƒ¡ãƒ¼ãƒ«ã‚µãƒ¼ãƒãƒ¼'; $wb['company_name_txt'] = '社å'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = '社å'; $wb['title_txt'] = 'å½¹è·'; $wb['firstname_txt'] = 'å'; $wb['surname_txt'] = '姓'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -66,6 +69,7 @@ $wb['limit_mailalias_error_notint'] = 'メールエイリアスã®æœ€å¤§æ•°ã¯ $wb['limit_mailforward_error_notint'] = 'メールフォワードã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; $wb['limit_mailcatchall_error_notint'] = 'ã‚ャッãƒã‚ªãƒ¼ãƒ«ãƒ»ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; $wb['limit_mailrouting_error_notint'] = 'メールã®é…é€çµŒè·¯ã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'メールフィルターã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; $wb['limit_mailfetchmail_error_notint'] = 'fetchmailアカウントã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; $wb['limit_mailquota_error_notint'] = 'メールボックスã®æœ€å¤§å®¹é‡ã¯æ•°å—ã§æŒ‡å®šã—ã¦ãã ã•ã„。'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/nl_client.lng b/interface/web/client/lib/lang/nl_client.lng index cd9f6e1742feeb339492320d0ce4da31edb9beb7..593d5dbdff1fb904284899a65accc379d58b2e02 100644 --- a/interface/web/client/lib/lang/nl_client.lng +++ b/interface/web/client/lib/lang/nl_client.lng @@ -6,12 +6,14 @@ $wb['limit_mailaliasdomain_txt'] = 'Max. number of domain aliassen'; $wb['limit_mailforward_txt'] = 'Max. aantal e-mail forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. aantal email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. aantal e-mail routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. aantal e-mail filters'; $wb['limit_fetchmail_txt'] = 'Max. aantal fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. aantal spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. aantal spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. aantal spamfilter policys'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Standaard mailserver'; $wb['company_name_txt'] = 'Bedrijfsnaam'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -38,6 +40,7 @@ $wb['company_txt'] = 'Bedrijfsnaam'; $wb['title_txt'] = 'Titel'; $wb['firstname_txt'] = 'Voornaam'; $wb['surname_txt'] = 'Achternaam'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limiet_domein'; $wb['limit_subdomain_txt'] = 'limiet_subdomein'; $wb['limit_webquota_txt'] = 'limiet_webquota'; @@ -71,6 +74,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'De e-mail domein alias limiet moet $wb['limit_mailforward_error_notint'] = 'De e-mail forward limiet moet een numerieke waarde zijn.'; $wb['limit_mailcatchall_error_notint'] = 'De e-mail catchall limiet moet een numerieke waarde zijn.'; $wb['limit_mailrouting_error_notint'] = 'De em-ail routing limiet moet een numerieke waarde zijn.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'De e-mail filter limiet moet een numerieke waarde zijn.'; $wb['limit_mailfetchmail_error_notint'] = 'De fetchmail limiet moet een numerieke waarde zijn.'; $wb['limit_mailquota_error_notint'] = 'De e-mail quota limiet moet een numerieke waarde zijn.'; @@ -202,4 +206,3 @@ $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/nl_client_template.lng b/interface/web/client/lib/lang/nl_client_template.lng index da4721757d4ef63f605c40248f59b101a95c8913..c31638c1327e4f56b8cd6029825dfd19b38cc6c3 100644 --- a/interface/web/client/lib/lang/nl_client_template.lng +++ b/interface/web/client/lib/lang/nl_client_template.lng @@ -8,12 +8,14 @@ $wb['limit_mailaliasdomain_txt'] = 'Max. aantal domein aliassen'; $wb['limit_mailforward_txt'] = 'Max.aantal e-mail forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. aantal e-mail catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. aantal e-mail routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. aantal e-mail filters'; $wb['limit_fetchmail_txt'] = 'Max. aantal fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. aantal spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. aantal spamfilter gebruikers'; $wb['limit_spamfilter_policy_txt'] = 'Max. aantal spamfilter policys'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limiet_domein'; $wb['limit_subdomain_txt'] = 'limiet_subdomein'; $wb['limit_webquota_txt'] = 'limiet_webquota'; @@ -39,6 +41,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'De e-mail domain alias limiet moet $wb['limit_mailforward_error_notint'] = 'De e-mail forward limiet moet een numerieke waarde zijn.'; $wb['limit_mailcatchall_error_notint'] = 'De e-mail catchall limiet moet een numerieke waarde zijn.'; $wb['limit_mailrouting_error_notint'] = 'De e-mail routing limiet moet een numerieke waarde zijn.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'De e-mail filter limiet moet een numerieke waarde zijn.'; $wb['limit_mailfetchmail_error_notint'] = 'De fetchmail limiet moet een numerieke waarde zijn.'; $wb['limit_mailquota_error_notint'] = 'De e-mail quota limiet moet een numerieke waarde zijn.'; @@ -91,6 +94,7 @@ $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/nl_reseller.lng b/interface/web/client/lib/lang/nl_reseller.lng index e8df5f7ad8b1c50b6f037af1127847d9dcbe6526..e67e560e93b091dfe3fe57e92a8069b01777d040 100644 --- a/interface/web/client/lib/lang/nl_reseller.lng +++ b/interface/web/client/lib/lang/nl_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Max. aantal e-mail aliassen'; $wb['limit_mailforward_txt'] = 'Max. aantal e-mail forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. aantal e-mail catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. aantal e-mail routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. aantal e-mail filters'; $wb['limit_fetchmail_txt'] = 'Max. aantal fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. aantal spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. aantal spamfilter gebruikers'; $wb['limit_spamfilter_policy_txt'] = 'Max. aantal spamfilter policys'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Standaard Mailserver'; $wb['company_name_txt'] = 'Bedrijfsnaam'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -37,6 +39,7 @@ $wb['company_txt'] = 'Bedrijfnaam'; $wb['title_txt'] = 'Titel'; $wb['firstname_txt'] = 'Voornaam'; $wb['surname_txt'] = 'Achternaam'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limiet_domein'; $wb['limit_subdomain_txt'] = 'limiet_subdomein'; $wb['limit_webquota_txt'] = 'limiet_webquota'; @@ -67,6 +70,7 @@ $wb['limit_mailalias_error_notint'] = 'De e-mail alias limiet moet een numerieke $wb['limit_mailforward_error_notint'] = 'De e-mail forward limiet moet een numerieke waarde zijn.'; $wb['limit_mailcatchall_error_notint'] = 'De e-mail catchall limiet moet een numerieke waarde zijn.'; $wb['limit_mailrouting_error_notint'] = 'De e-mail routing limiet moet een numerieke waarde zijn.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'De e-mail filter limiet moet een numerieke waarde zijn.'; $wb['limit_mailfetchmail_error_notint'] = 'De fetchmail limiet moet een numerieke waarde zijn.'; $wb['limit_mailquota_error_notint'] = 'De email quota limiet moet een numerieke waarde zijn.'; @@ -206,4 +210,3 @@ $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/pl_client.lng b/interface/web/client/lib/lang/pl_client.lng index 89fafa6776c3239f4c2a4f976b488021a4ae9dd1..6943deef9502488431195fc80af074cea5a51c26 100644 --- a/interface/web/client/lib/lang/pl_client.lng +++ b/interface/web/client/lib/lang/pl_client.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Maksymalna ilość aliasów e-mail'; $wb['limit_mailforward_txt'] = 'Maksymalna ilość przekierowaÅ„ e-mail'; $wb['limit_mailcatchall_txt'] = 'Maksymalna ilość kont e-mail catchall'; $wb['limit_mailrouting_txt'] = 'Maksymalna ilość Å›cieżek e-mail'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Maksymalna ilość filtrów e-mail'; $wb['limit_fetchmail_txt'] = 'Maksymalna ilość kont z fetchmail'; $wb['limit_mailquota_txt'] = 'Pojemność skrzynki'; $wb['limit_spamfilter_wblist_txt'] = 'Maksymalna ilość filtrów spamu biaÅ‚ej / czarnej listy'; $wb['limit_spamfilter_user_txt'] = 'Maksymalna ilość filtrów spamu użytkowników'; $wb['limit_spamfilter_policy_txt'] = 'Maksymalna ilość polityk filtrów spamu'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'DomyÅ›lny serwer e-mail'; $wb['company_name_txt'] = 'Nazwa firmy'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'Firma'; $wb['title_txt'] = 'TytuÅ‚'; $wb['firstname_txt'] = 'ImiÄ™'; $wb['surname_txt'] = 'Nazwisko'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Limit domen'; $wb['limit_subdomain_txt'] = 'Limit subdomen'; $wb['limit_webquota_txt'] = 'Limit pojemnoÅ›ci www'; @@ -66,6 +69,7 @@ $wb['limit_mailalias_error_notint'] = 'Limit aliasów e-mail musi być liczbÄ….' $wb['limit_mailforward_error_notint'] = 'Limit przekierowaÅ„ musi być liczbÄ….'; $wb['limit_mailcatchall_error_notint'] = 'Limit e-mail catchall musi być liczbÄ….'; $wb['limit_mailrouting_error_notint'] = 'Limit Å›cieżek e-mail musi być liczbÄ….'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Limit filtrów e-mail musi być liczbÄ….'; $wb['limit_mailfetchmail_error_notint'] = 'Limit fetchmail musi być liczbÄ….'; $wb['limit_mailquota_error_notint'] = 'Limit pojemnoÅ›ci skrzynki musi być liczbÄ….'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/pl_client_template.lng b/interface/web/client/lib/lang/pl_client_template.lng index 3a878ec9746b4bb9908777c2e80cfe4addbef39c..614bf2757584bab00c4c83b74c486da935bd0a11 100644 --- a/interface/web/client/lib/lang/pl_client_template.lng +++ b/interface/web/client/lib/lang/pl_client_template.lng @@ -7,12 +7,14 @@ $wb['limit_mailalias_txt'] = 'Maksymalna ilość aliasów e-mail'; $wb['limit_mailforward_txt'] = 'Maksymalna ilość przekierowaÅ„ e-mail'; $wb['limit_mailcatchall_txt'] = 'Maksymalna ilość kont e-mail catchall'; $wb['limit_mailrouting_txt'] = 'Maksymalna ilość Å›cieżek e-mail'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Maksymalna ilość filtrów e-mail'; $wb['limit_fetchmail_txt'] = 'Maksymalna ilość kont z fetchmail'; $wb['limit_mailquota_txt'] = 'Pojemność skrzynki'; $wb['limit_spamfilter_wblist_txt'] = 'Maksymalna ilość filtrów spamu biaÅ‚ej / czarnej listy'; $wb['limit_spamfilter_user_txt'] = 'Maksymalna ilość filtrów spamu użytkowników'; $wb['limit_spamfilter_policy_txt'] = 'Maksymalna ilość polityk filtrów spamu'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domen'; $wb['limit_subdomain_txt'] = 'limit_subdomen'; $wb['limit_webquota_txt'] = 'limit_pojemnosci_www'; @@ -35,6 +37,7 @@ $wb['limit_mailalias_error_notint'] = 'Limit aliasów musi być liczbÄ….'; $wb['limit_mailforward_error_notint'] = 'Limit przekierowaÅ„ e-mail musi być liczbÄ….'; $wb['limit_mailcatchall_error_notint'] = 'Limit e-mail catchall musi być liczbÄ….'; $wb['limit_mailrouting_error_notint'] = 'Limit Å›cieżek e-mail musi być liczbÄ….'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Limit filtrów e-mail musi być liczbÄ….'; $wb['limit_mailfetchmail_error_notint'] = 'Limit fetchmail musi być liczbÄ….'; $wb['limit_mailquota_error_notint'] = 'Limit pojemnoÅ›ci skrzynki musi być liczbÄ….'; @@ -91,6 +94,7 @@ $wb['limit_aps_txt'] = 'Maks. liczba instancji APS'; $wb['limit_aps_error_notint'] = 'Limit instancji APS musi być liczbÄ…'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/pl_reseller.lng b/interface/web/client/lib/lang/pl_reseller.lng index 71f5bcfa4b157a8d390b6fbe045d73047dd84676..da566ab4c6c14fdc8674a0bd06fb2057cec38851 100644 --- a/interface/web/client/lib/lang/pl_reseller.lng +++ b/interface/web/client/lib/lang/pl_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Maksymalna ilość aliasów e-mail'; $wb['limit_mailforward_txt'] = 'Maksymalna ilość przekierowaÅ„ e-mail'; $wb['limit_mailcatchall_txt'] = 'Maksymalna ilość kont e-mail catchall'; $wb['limit_mailrouting_txt'] = 'Maksymalna ilość Å›cieżek e-mail'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Maksymalna ilość filtrów e-mail'; $wb['limit_fetchmail_txt'] = 'Maksymalna ilość kont fetchmail'; $wb['limit_mailquota_txt'] = 'Limit skrzynki pocztowej'; $wb['limit_spamfilter_wblist_txt'] = 'Maksymalna ilość filtrów spamu biaÅ‚ej / czarnej listy'; $wb['limit_spamfilter_user_txt'] = 'Maksymalna ilość użytkowników z filtrem spamu'; $wb['limit_spamfilter_policy_txt'] = 'Maksymalna ilość polityk filtrów spamu'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'DomyÅ›lny serwer poczty'; $wb['company_name_txt'] = 'Nazwa firmy'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'Firma'; $wb['title_txt'] = 'TytuÅ‚'; $wb['firstname_txt'] = 'ImiÄ™'; $wb['surname_txt'] = 'Nazwisko'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domen'; $wb['limit_subdomain_txt'] = 'limit_subdomen'; $wb['limit_webquota_txt'] = 'limit_pojemnosci_www'; @@ -66,6 +69,7 @@ $wb['limit_mailalias_error_notint'] = 'Limit aliasów e-mail musi być liczbÄ….' $wb['limit_mailforward_error_notint'] = 'Limit przekierowaÅ„ e-mail musi być liczbÄ….'; $wb['limit_mailcatchall_error_notint'] = 'Limit kont e-mail catchall musi być liczbÄ….'; $wb['limit_mailrouting_error_notint'] = 'Limit Å›cieżek e-mail musi być liczbÄ….'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Limit filtrów e-mail musi być liczbÄ….'; $wb['limit_mailfetchmail_error_notint'] = 'Limit kont fetchmail musi być liczbÄ….'; $wb['limit_mailquota_error_notint'] = 'Limit pojemnoÅ›ci konta e-mail musi być liczbÄ….'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/pt_client.lng b/interface/web/client/lib/lang/pt_client.lng index 9ce35235cddb8794e402fdaa19d8efafbb7e635d..2b90c823ca93407a2f80b3f172babc97c0ce87e2 100644 --- a/interface/web/client/lib/lang/pt_client.lng +++ b/interface/web/client/lib/lang/pt_client.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Número máximo de aliases de correio'; $wb['limit_mailforward_txt'] = 'Número máximo de redireccionamento de correio'; $wb['limit_mailcatchall_txt'] = 'Número máximo de catchall de correio'; $wb['limit_mailrouting_txt'] = 'Número máximo de rotas de correio'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Número máximo de filtros de correio'; $wb['limit_fetchmail_txt'] = 'Número máximo de fetchmail de correio'; $wb['limit_mailquota_txt'] = 'Quota de Correio'; $wb['limit_spamfilter_wblist_txt'] = 'Número máximo de filtros spam lista branca / negra'; $wb['limit_spamfilter_user_txt'] = 'Número máximo de utilizadors de filtros spam'; $wb['limit_spamfilter_policy_txt'] = 'Número máximo de polÃticas de filtros spam'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Servidor de Correio Padrão'; $wb['company_name_txt'] = 'Empresa'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'Empresa'; $wb['title_txt'] = 'TÃtulo'; $wb['firstname_txt'] = 'Nome'; $wb['surname_txt'] = 'Sobrenome'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limite_dominio'; $wb['limit_subdomain_txt'] = 'limit_subdominio'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -63,6 +66,7 @@ $wb['limit_mailalias_error_notint'] = 'Limite do alias de correio deve ser um n $wb['limit_mailforward_error_notint'] = 'Limite de redireccionamento de correio deve ser um número'; $wb['limit_mailcatchall_error_notint'] = 'Limite de catchall deve ser um número.'; $wb['limit_mailrouting_error_notint'] = 'Limite de rotas de correio deve ser um número.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Limite de filtros de correio deve ser um número.'; $wb['limit_mailfetchmail_error_notint'] = 'Limite de fetchmail deve ser um número.'; $wb['limit_mailquota_error_notint'] = 'A quota de correio deve ser um número'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/pt_client_template.lng b/interface/web/client/lib/lang/pt_client_template.lng index 0c4a949d49d89b75173c953794734b04f83b4856..7f63af0df32217c2291abb807e942d6eb43890f5 100644 --- a/interface/web/client/lib/lang/pt_client_template.lng +++ b/interface/web/client/lib/lang/pt_client_template.lng @@ -7,12 +7,14 @@ $wb['limit_mailalias_txt'] = 'Limite Máximo de alias de correio'; $wb['limit_mailforward_txt'] = 'Limite Máximo de redireccionamentos de correio'; $wb['limit_mailcatchall_txt'] = 'Limite máximo de contas catchall'; $wb['limit_mailrouting_txt'] = 'Limite máximo de rotas de Correio'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Número Máximo de Filtros de Correio'; $wb['limit_fetchmail_txt'] = 'Número Máximo de Contas fetchmail'; $wb['limit_mailquota_txt'] = 'Espaço de Caixa de Correio'; $wb['limit_spamfilter_wblist_txt'] = 'Número máximo de spamfilter permitidos /lista negra'; $wb['limit_spamfilter_user_txt'] = 'Número máx de utilizadors spamfilter'; $wb['limit_spamfilter_policy_txt'] = 'Número máx de polÃticas spamfilter'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limite_dominio'; $wb['limit_subdomain_txt'] = 'limite_subdominio'; $wb['limit_webquota_txt'] = 'limite_webquota'; @@ -32,6 +34,7 @@ $wb['limit_mailalias_error_notint'] = 'O limite do apelido de correio deve ser n $wb['limit_mailforward_error_notint'] = 'O limite de direccionamento de correio deve ser um número'; $wb['limit_mailcatchall_error_notint'] = 'O limite de catchall do domÃnio deve ser um número'; $wb['limit_mailrouting_error_notint'] = 'Limite de rota de correio deve ser um número'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'O limite de filtro de correio deve ser um número.'; $wb['limit_mailfetchmail_error_notint'] = 'Limite fetchmail deve ser um número.'; $wb['limit_mailquota_error_notint'] = 'Cota de correio deve ser um número.'; @@ -91,6 +94,7 @@ $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/pt_reseller.lng b/interface/web/client/lib/lang/pt_reseller.lng index 6bd89a971aac692890aef636617d142725d485bb..22c4f107a8d0030bd1536898d66ccd21f87ade81 100644 --- a/interface/web/client/lib/lang/pt_reseller.lng +++ b/interface/web/client/lib/lang/pt_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Número máximo de aliases de correio'; $wb['limit_mailforward_txt'] = 'Número máximo de encaminhamentos de correio'; $wb['limit_mailcatchall_txt'] = 'Número máximo de contas catchall'; $wb['limit_mailrouting_txt'] = 'Número máximo de rotas de correio'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Número máximo de filtros de correio'; $wb['limit_fetchmail_txt'] = 'Número máximo de contas fetchmail '; $wb['limit_mailquota_txt'] = 'Quota de correio'; $wb['limit_spamfilter_wblist_txt'] = 'Número máximo de filtros do spamfilter lista branca / negra'; $wb['limit_spamfilter_user_txt'] = 'Número máximo de utilizadors de spamfilter'; $wb['limit_spamfilter_policy_txt'] = 'Número máximo de polÃticas de spamfilter'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Servidor de Correio Padrão'; $wb['company_name_txt'] = 'Empresa'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'Empresa'; $wb['title_txt'] = 'TÃtulo'; $wb['firstname_txt'] = 'Nome'; $wb['surname_txt'] = 'Sobrenome'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limite_domÃnio'; $wb['limit_subdomain_txt'] = 'limite_subdomÃnio'; $wb['limit_webquota_txt'] = 'limite_webquota'; @@ -66,6 +69,7 @@ $wb['limit_mailalias_error_notint'] = 'O limite de aliases de correio deve ser u $wb['limit_mailforward_error_notint'] = 'O limite de encaminhamentos de correio deve ser um número.'; $wb['limit_mailcatchall_error_notint'] = 'O limite de contas catchall deve ser um número.'; $wb['limit_mailrouting_error_notint'] = 'O limite de rotas de correio deve ser um número.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'O filtro de correio deve ser um número.'; $wb['limit_mailfetchmail_error_notint'] = 'O limite de fetchmail deve ser um número.'; $wb['limit_mailquota_error_notint'] = 'O limite de quota de correio deve ser um número.'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/ro_client.lng b/interface/web/client/lib/lang/ro_client.lng index 3bc5e59d2aedd08c4cde3b39efd058c9598deb6b..70407714a8fbe67e51c83474c909fcd43c077f68 100644 --- a/interface/web/client/lib/lang/ro_client.lng +++ b/interface/web/client/lib/lang/ro_client.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Numar maxim de email alias-uri'; $wb['limit_mailforward_txt'] = 'Numar maxim de mail forward'; $wb['limit_mailcatchall_txt'] = 'numar maxim de mail catch all'; $wb['limit_mailrouting_txt'] = 'Numar maxim de mail rute'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Numar maxim de filtre mail'; $wb['limit_fetchmail_txt'] = 'Numar maxim de conturi fetchmail'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Numar maxim de filtre spam whitelist /blacklist'; $wb['limit_spamfilter_user_txt'] = 'Numar maxim de filtre spam'; $wb['limit_spamfilter_policy_txt'] = 'Numar maxim de reguli filtre spam '; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['company_name_txt'] = 'Nume companie'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'Companie'; $wb['title_txt'] = 'Titlu'; $wb['firstname_txt'] = 'Prenume'; $wb['surname_txt'] = 'Nume'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limita_domeniu'; $wb['limit_subdomain_txt'] = 'limita_subdomeniu'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -63,6 +66,7 @@ $wb['limit_mailalias_error_notint'] = 'Numarul maxim de alias-uri email trebuie $wb['limit_mailforward_error_notint'] = 'Numarul limta de forward-uri email trebuie sa fie un numar intreg'; $wb['limit_mailcatchall_error_notint'] = 'numarul limta de email catch all trebuie sa fie un numar intreg'; $wb['limit_mailrouting_error_notint'] = 'numarul maxim de rute email trebuie sa fie un numar intreg'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'numarul maxim de filtre email trebuie sa fie un numar intreg'; $wb['limit_mailfetchmail_error_notint'] = 'numarul maxim de fetchmail trebuie sa fie un numar intreg'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/ro_client_template.lng b/interface/web/client/lib/lang/ro_client_template.lng index 57cbe690ddc4eef4ed84c27931ab846becdda8ef..abd9f64eb123a7333335f5066125d6d7a7852b62 100644 --- a/interface/web/client/lib/lang/ro_client_template.lng +++ b/interface/web/client/lib/lang/ro_client_template.lng @@ -7,12 +7,14 @@ $wb['limit_mailalias_txt'] = 'Max. number of email aliases'; $wb['limit_mailforward_txt'] = 'Max. number of email forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. number of email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. number of email filters'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -32,6 +34,7 @@ $wb['limit_mailalias_error_notint'] = 'The email alias limit must be a number.'; $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -91,6 +94,7 @@ $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/ro_reseller.lng b/interface/web/client/lib/lang/ro_reseller.lng index 512bc5cb23709ef0cdef6bc5c604607ecb6b0741..9f3ce64e8007a6dd75590e1e68f32586827d9561 100644 --- a/interface/web/client/lib/lang/ro_reseller.lng +++ b/interface/web/client/lib/lang/ro_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Max. number of email aliases'; $wb['limit_mailforward_txt'] = 'Max. number of email forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. number of email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. number of email filters'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['company_name_txt'] = 'Company name'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'Company'; $wb['title_txt'] = 'Title'; $wb['firstname_txt'] = 'Firstname'; $wb['surname_txt'] = 'Surname'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -66,6 +69,7 @@ $wb['limit_mailalias_error_notint'] = 'The email alias limit must be a number.'; $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/ru_client.lng b/interface/web/client/lib/lang/ru_client.lng index 080512f5b0ad166ed99cdc9810aacafb50e2f759..d8cd5e4788e4cfa8607d21697777cd7c2ab53de6 100644 --- a/interface/web/client/lib/lang/ru_client.lng +++ b/interface/web/client/lib/lang/ru_client.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'МакÑ. количеÑтво почтовых а $wb['limit_mailforward_txt'] = 'МакÑ.чиÑо почтовых переÑылок'; $wb['limit_mailcatchall_txt'] = 'МакÑ. количеÑтво учётных запиÑей Ñводных почтовых Ñщиков'; $wb['limit_mailrouting_txt'] = 'МакÑ. количеÑтво почтовых маршрутов'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'МакÑ. количеÑтво почтовых фильтров'; $wb['limit_fetchmail_txt'] = 'МакÑ. количеÑтво учётных запиÑей Ñборщиков почты'; $wb['limit_mailquota_txt'] = 'Квота почтового Ñщика'; $wb['limit_spamfilter_wblist_txt'] = 'МакÑ. количеÑтво фильтров белого/черного ÑпиÑка'; $wb['limit_spamfilter_user_txt'] = 'МакÑ. количеÑтво пользователей Ñпам-фильтра'; $wb['limit_spamfilter_policy_txt'] = 'МакÑ. количеÑтво правил Ñпам-фильтра'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Почтовый Ñервер по умолчанию'; $wb['company_name_txt'] = 'Ðазвание компании'; $wb['contact_firstname_txt'] = 'Ð˜Ð¼Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð°'; @@ -36,6 +38,7 @@ $wb['title_txt'] = 'Заголовок'; $wb['firstname_txt'] = 'ИмÑ'; $wb['surname_txt'] = 'ФамилиÑ'; $wb['limit_client_txt'] = 'МакÑ. количеÑтво клиентов'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Лимит доменов'; $wb['limit_subdomain_txt'] = 'Лимит поддоменов'; $wb['limit_webquota_txt'] = 'Лимит Web-квоты'; @@ -62,6 +65,7 @@ $wb['limit_mailalias_error_notint'] = 'Лимит почтовых алиаÑо $wb['limit_mailforward_error_notint'] = 'Лимит почтовых переÑылок должен быть чиÑлом.'; $wb['limit_mailcatchall_error_notint'] = 'Лимит Ñводных почтовых Ñщиков должен быть чиÑлом.'; $wb['limit_mailrouting_error_notint'] = 'Лимит почтовых маршрутов должен быть чиÑлом.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Лимит почтовых фильтров должен быть чиÑлом.'; $wb['limit_mailfetchmail_error_notint'] = 'Лимит Ñборщиков почты должен быть чиÑлом.'; $wb['limit_mailquota_error_notint'] = 'Лимит почтовой квоты должен быть чиÑлом.'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Клик Ð´Ð»Ñ ÑƒÑтановки'; $wb['limit_dns_record_error_notint'] = 'Лимит вторичных DNS-зон должен быть чиÑлом.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Лимиты'; -?> diff --git a/interface/web/client/lib/lang/ru_client_template.lng b/interface/web/client/lib/lang/ru_client_template.lng index 46168e1ad55e2e21265e87c6ab4a822cd92b350a..65397933ff0069216bbe2975df9ae26a13a5d459 100644 --- a/interface/web/client/lib/lang/ru_client_template.lng +++ b/interface/web/client/lib/lang/ru_client_template.lng @@ -7,6 +7,7 @@ $wb['limit_mailalias_txt'] = 'МакÑ. количеÑтво почтовых а $wb['limit_mailforward_txt'] = 'МакÑ. количеÑтво почтовых переÑылок'; $wb['limit_mailcatchall_txt'] = 'МакÑ. количеÑтво учётных запиÑей Ñводных почтовых Ñщиков'; $wb['limit_mailrouting_txt'] = 'МакÑ. количеÑтво почтовых маршрутов'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'МакÑ. количеÑтво почтовых фильтров'; $wb['limit_fetchmail_txt'] = 'МакÑ. количеÑтво учётных запиÑей Ñборщиков почты'; $wb['limit_mailquota_txt'] = 'Квота почтового Ñщика'; @@ -14,6 +15,7 @@ $wb['limit_spamfilter_wblist_txt'] = 'МакÑ. количеÑтво прави $wb['limit_spamfilter_user_txt'] = 'МакÑ. количеÑтво пользователей Ñпам-фильтра'; $wb['limit_spamfilter_policy_txt'] = 'МакÑ. количеÑтво правил Ñпам-фильтра'; $wb['limit_client_txt'] = 'МакÑ. количеÑтво клиентов'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'МакÑ. количеÑтво доменов'; $wb['limit_subdomain_txt'] = 'Лимит поддоменов'; $wb['limit_webquota_txt'] = 'Лимит Web-квоты'; @@ -32,6 +34,7 @@ $wb['limit_mailalias_error_notint'] = 'Лимит почтовых алиаÑо $wb['limit_mailforward_error_notint'] = 'Лимит почтовых переÑылок должен быть чиÑлом.'; $wb['limit_mailcatchall_error_notint'] = 'Лимит Ñводных почтовых Ñщиков должен быть чиÑлом.'; $wb['limit_mailrouting_error_notint'] = 'Лимит почтовых маршрутов должен быть чиÑлом.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Лимит почтовых фильтров должен быть чиÑлом.'; $wb['limit_mailfetchmail_error_notint'] = 'Лимит Ñборщиков почты должен быть чиÑлом.'; $wb['limit_mailquota_error_notint'] = 'Лимит почтовой квоты должен быть чиÑлом.'; @@ -91,6 +94,7 @@ $wb['limit_aps_txt'] = 'МакÑ. количеÑтво ÑкземплÑров AP $wb['limit_aps_error_notint'] = 'Лимит ÑкземплÑров APS должен быть чиÑлом.'; $wb['limit_domainmodule_txt'] = 'Лимит модулей домена'; $wb['client_limits_txt'] = 'Лимиты Клиента'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Почтовый Ñервер по умолчанию'; $wb['default_webserver_txt'] = 'Web-Ñервер по умолчанию'; $wb['default_dnsserver_txt'] = 'DNS-Ñервер по умолчанию'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Web-Ñерверы'; $wb['db_servers_txt'] = 'Серверы баз данных'; $wb['mail_servers_txt'] = 'Серверы почты'; $wb['Limits'] = 'Лимиты'; -?> diff --git a/interface/web/client/lib/lang/ru_reseller.lng b/interface/web/client/lib/lang/ru_reseller.lng index f5806377c3f010f24257632ace654aef5f39839e..3447e52070648f84a820cb9efb5a5da4753a58f9 100644 --- a/interface/web/client/lib/lang/ru_reseller.lng +++ b/interface/web/client/lib/lang/ru_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'МакÑ. количеÑтво почтовых а $wb['limit_mailforward_txt'] = 'МакÑ. количеÑтво почтовых переÑылок'; $wb['limit_mailcatchall_txt'] = 'МакÑ. количеÑтво учётных запиÑей Ñводных почтовых Ñщиков'; $wb['limit_mailrouting_txt'] = 'МакÑимальное количеÑтво почтовых маршрутов'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'МакÑ. количеÑтво почтовых фильтров'; $wb['limit_fetchmail_txt'] = 'МакÑ. количеÑтво учётных запиÑей Ñборщиков почты'; $wb['limit_mailquota_txt'] = 'Квота Ñщика'; $wb['limit_spamfilter_wblist_txt'] = 'МакÑ. количеÑтво белых/черных ÑпиÑков Ñпам-фильтра'; $wb['limit_spamfilter_user_txt'] = 'МакÑ. количеÑтво пользователей Ñпам-фильтра'; $wb['limit_spamfilter_policy_txt'] = 'МакÑ. количеÑтво правил Ñпам-фильтра'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Почтовый Ñервер по умолчанию'; $wb['company_name_txt'] = 'КомпаниÑ'; $wb['contact_firstname_txt'] = 'Ð˜Ð¼Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð°'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'КомпаниÑ'; $wb['title_txt'] = 'Заголовок'; $wb['firstname_txt'] = 'ИмÑ'; $wb['surname_txt'] = 'ФамилиÑ'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'Лимит доменов'; $wb['limit_subdomain_txt'] = 'Лимит поддоменов'; $wb['limit_webquota_txt'] = 'Лимит Web-квоты'; @@ -66,6 +69,7 @@ $wb['limit_mailalias_error_notint'] = 'Лимит почтовых алиаÑо $wb['limit_mailforward_error_notint'] = 'Лимит почтовых переÑылок должен быть чиÑлом.'; $wb['limit_mailcatchall_error_notint'] = 'Лимит Ñводных почтовых Ñщиков должен быть чиÑлом.'; $wb['limit_mailrouting_error_notint'] = 'Лимит почтовых маршрутов должен быть чиÑлом.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Лимит почтовых фильтров должен быть чиÑлом.'; $wb['limit_mailfetchmail_error_notint'] = 'Лимит Ñборщиков почты должен быть чиÑломм.'; $wb['limit_mailquota_error_notint'] = 'Лимит почтовой квоты должен быть чиÑлом.'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Клик Ð´Ð»Ñ ÑƒÑтановки'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Лимиты'; -?> diff --git a/interface/web/client/lib/lang/se_client.lng b/interface/web/client/lib/lang/se_client.lng index feaee0e9c1760498efbdb21d239e103cffeeb647..41aca6a6bb5d978681ff70caf33927360558fce6 100644 --- a/interface/web/client/lib/lang/se_client.lng +++ b/interface/web/client/lib/lang/se_client.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Max antal epostalias'; $wb['limit_mailforward_txt'] = 'Max antal vidarebefordringar'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max antal epostrutter'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max antal epostfilter'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Kvot för epostkonton'; $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max antal spamfilteranvändare'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Förvald epostserver'; $wb['company_name_txt'] = 'Företagsnamn'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -37,6 +39,7 @@ $wb['title_txt'] = 'Titel'; $wb['firstname_txt'] = 'Förnamn'; $wb['surname_txt'] = 'Efternamn'; $wb['limit_client_txt'] = 'Max antal kunder'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'domängräns'; $wb['limit_subdomain_txt'] = 'underdomängräns'; $wb['limit_webquota_txt'] = 'webbsideskvot'; @@ -63,6 +66,7 @@ $wb['limit_mailalias_error_notint'] = 'The email alias limit must be a number.'; $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/se_client_template.lng b/interface/web/client/lib/lang/se_client_template.lng index 46932c9e50960fd7273b4a06e12934c0864969fa..a1a6f9457b3138d1cfa5994abc1efab1baf0de3f 100644 --- a/interface/web/client/lib/lang/se_client_template.lng +++ b/interface/web/client/lib/lang/se_client_template.lng @@ -7,6 +7,7 @@ $wb['limit_mailalias_txt'] = 'Max. number of email aliases'; $wb['limit_mailforward_txt'] = 'Max. number of email forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. number of email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. number of email filters'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; @@ -14,6 +15,7 @@ $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklis $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; $wb['limit_client_txt'] = 'Max. number of Clients'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -32,6 +34,7 @@ $wb['limit_mailalias_error_notint'] = 'The email alias limit must be a number.'; $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -91,6 +94,7 @@ $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/se_reseller.lng b/interface/web/client/lib/lang/se_reseller.lng index 512bc5cb23709ef0cdef6bc5c604607ecb6b0741..9f3ce64e8007a6dd75590e1e68f32586827d9561 100644 --- a/interface/web/client/lib/lang/se_reseller.lng +++ b/interface/web/client/lib/lang/se_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Max. number of email aliases'; $wb['limit_mailforward_txt'] = 'Max. number of email forwarders'; $wb['limit_mailcatchall_txt'] = 'Max. number of email catchall accounts'; $wb['limit_mailrouting_txt'] = 'Max. number of email routes'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. number of email filters'; $wb['limit_fetchmail_txt'] = 'Max. number of fetchmail accounts'; $wb['limit_mailquota_txt'] = 'Mailbox quota'; $wb['limit_spamfilter_wblist_txt'] = 'Max. number of spamfilter white / blacklist filters'; $wb['limit_spamfilter_user_txt'] = 'Max. number of spamfilter users'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['company_name_txt'] = 'Company name'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'Company'; $wb['title_txt'] = 'Title'; $wb['firstname_txt'] = 'Firstname'; $wb['surname_txt'] = 'Surname'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -66,6 +69,7 @@ $wb['limit_mailalias_error_notint'] = 'The email alias limit must be a number.'; $wb['limit_mailforward_error_notint'] = 'The email forward limit must be a number.'; $wb['limit_mailcatchall_error_notint'] = 'The email catchall limit must be a number.'; $wb['limit_mailrouting_error_notint'] = 'The email routing limit must be a number.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'The email filter limit must be a number.'; $wb['limit_mailfetchmail_error_notint'] = 'The fetchmail limit must be a number.'; $wb['limit_mailquota_error_notint'] = 'The email quota limit must be a number.'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/sk_client.lng b/interface/web/client/lib/lang/sk_client.lng index 542b4121d939aa504d397b9af487c0d8c6b22293..5ca58b5b0e9aeb7af32a0b504714d33cf2f41786 100644 --- a/interface/web/client/lib/lang/sk_client.lng +++ b/interface/web/client/lib/lang/sk_client.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Max. poÄet e-mailových aliasov'; $wb['limit_mailforward_txt'] = 'Max. poÄet e-mailových preposielanÃ'; $wb['limit_mailcatchall_txt'] = 'Max. poÄet e-mailových doménových koÅ¡ov'; $wb['limit_mailrouting_txt'] = 'Max. poÄet e-mailových smerovanÃ'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. poÄet e-mailových filtrov'; $wb['limit_fetchmail_txt'] = 'Max. poÄet úÄtov fetchmail'; $wb['limit_mailquota_txt'] = 'Kvóta schránky'; $wb['limit_spamfilter_wblist_txt'] = 'Max. poÄet Spamfilter biele / Äierne listiny filtre'; $wb['limit_spamfilter_user_txt'] = 'Max. poÄet poUžÃvateľov Spamfilter'; $wb['limit_spamfilter_policy_txt'] = 'Max. poÄet Spamfilter politÃk'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Predvolený Mailserver'; $wb['company_name_txt'] = 'Názov firmy'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'SpoloÄnosÅ¥'; $wb['title_txt'] = 'Názov'; $wb['firstname_txt'] = 'Krstné meno'; $wb['surname_txt'] = 'Priezvisko'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domén'; $wb['limit_subdomain_txt'] = 'limit_subdomén'; $wb['limit_webquota_txt'] = 'limit_webkvóta'; @@ -65,6 +68,7 @@ $wb['limit_mailalias_error_notint'] = 'Limit email alias musà byÅ¥ ÄÃslo.'; $wb['limit_mailforward_error_notint'] = 'Limit email preposielanà musà byÅ¥ ÄÃslo.'; $wb['limit_mailcatchall_error_notint'] = 'Limit doménových koÅ¡ov musà byÅ¥ ÄÃslo.'; $wb['limit_mailrouting_error_notint'] = 'Limit email smerovanà musà byÅ¥ ÄÃslo.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Limit email filter musà byÅ¥ ÄÃslo.'; $wb['limit_mailfetchmail_error_notint'] = 'Limit fetchmail musà byÅ¥ ÄÃslo.'; $wb['limit_mailquota_error_notint'] = 'Limit email kvót musà byÅ¥ ÄÃslo.'; @@ -202,4 +206,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/sk_client_template.lng b/interface/web/client/lib/lang/sk_client_template.lng index e3cb788bdd6ce5c412ca6349576ccd5f229ebe9c..21acadd651d85f63a8e8fa469e7d46fbacece76d 100644 --- a/interface/web/client/lib/lang/sk_client_template.lng +++ b/interface/web/client/lib/lang/sk_client_template.lng @@ -7,12 +7,14 @@ $wb['limit_mailalias_txt'] = 'Max. poÄet e-mailových aliasov'; $wb['limit_mailforward_txt'] = 'Max. poÄet e-mailových prenose'; $wb['limit_mailcatchall_txt'] = 'Max. poÄet e-mailových doménový koÅ¡ov'; $wb['limit_mailrouting_txt'] = 'Max. poÄet e-mailových smerovanÃ'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. poÄet e-mailových filtrov'; $wb['limit_fetchmail_txt'] = 'Max. poÄet úÄtov fetchmail'; $wb['limit_mailquota_txt'] = 'Kvóta schránky'; $wb['limit_spamfilter_wblist_txt'] = 'Max. poÄet Spamfilter bielych / Äiernych listÃn filtrov'; $wb['limit_spamfilter_user_txt'] = 'Max. poÄet poUžÃvateľských Spamfilterov'; $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domén'; $wb['limit_subdomain_txt'] = 'limit_subdomén'; $wb['limit_webquota_txt'] = 'limit_webkvôt'; @@ -34,6 +36,7 @@ $wb['limit_mailalias_error_notint'] = 'Limit email aliasov musà byÅ¥ ÄÃslo.'; $wb['limit_mailforward_error_notint'] = 'Limit emailpreposielanà musà byÅ¥ ÄÃslo.'; $wb['limit_mailcatchall_error_notint'] = 'Limit email doménových koÅ¡ov musà byÅ¥ ÄÃslo.'; $wb['limit_mailrouting_error_notint'] = 'Limit email smerovanà musà byÅ¥ ÄÃslo.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Limit email filter musà byÅ¥ ÄÃslo.'; $wb['limit_mailfetchmail_error_notint'] = 'Limit fetchmail musà byÅ¥ ÄÃslo.'; $wb['limit_mailquota_error_notint'] = 'Limit email kvôta musà byÅ¥ ÄÃslo.'; @@ -91,6 +94,7 @@ $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Default Mailserver'; $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; @@ -122,4 +126,3 @@ $wb['web_servers_txt'] = 'Webservers'; $wb['db_servers_txt'] = 'Database servers'; $wb['mail_servers_txt'] = 'Mailservers'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/sk_reseller.lng b/interface/web/client/lib/lang/sk_reseller.lng index 82b289df2b3f53d9da459fc6256a211b4bcfc005..a00b1a4156eb4d3b6dc668b0d59338ea37fbf327 100644 --- a/interface/web/client/lib/lang/sk_reseller.lng +++ b/interface/web/client/lib/lang/sk_reseller.lng @@ -5,12 +5,14 @@ $wb['limit_mailalias_txt'] = 'Max. poÄet e-mailových aliasov'; $wb['limit_mailforward_txt'] = 'Max. poÄet e-mailových preposielanÃ'; $wb['limit_mailcatchall_txt'] = 'Max. poÄet e-mailových doménových koÅ¡ov'; $wb['limit_mailrouting_txt'] = 'Max. poÄet e-mailových smerovanÃ'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'Max. poÄet e-mailových filtrov'; $wb['limit_fetchmail_txt'] = 'Max. poÄet úÄtov fetchmail'; $wb['limit_mailquota_txt'] = 'Kvóta schránky'; $wb['limit_spamfilter_wblist_txt'] = 'Max. poÄet Spamfilter biele / Äierne filtre'; $wb['limit_spamfilter_user_txt'] = 'Max. poÄet poUžÃvateľov Spamfiltrov'; $wb['limit_spamfilter_policy_txt'] = 'Max. poÄet Spamfilter politÃk'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Predvolený Mailserver'; $wb['company_name_txt'] = 'Názov firmy'; $wb['contact_firstname_txt'] = 'Contact firstname'; @@ -36,6 +38,7 @@ $wb['company_txt'] = 'SpoloÄnosÅ¥'; $wb['title_txt'] = 'Nadpis'; $wb['firstname_txt'] = 'Krstné meno'; $wb['surname_txt'] = 'Priezvisko'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domén'; $wb['limit_subdomain_txt'] = 'limit_subdomén'; $wb['limit_webquota_txt'] = 'limit_webkvóta'; @@ -65,6 +68,7 @@ $wb['limit_mailalias_error_notint'] = 'Limit Email alias musà byÅ¥ ÄÃslo.'; $wb['limit_mailforward_error_notint'] = 'Limit E-mail preposielanie musà byÅ¥ ÄÃslo.'; $wb['limit_mailcatchall_error_notint'] = 'Limit E-mail doménový kôš musà byÅ¥ ÄÃslo.'; $wb['limit_mailrouting_error_notint'] = 'Limit E-mail smerovania musà byÅ¥ ÄÃslo.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'Limit email filter musà byÅ¥ ÄÃslo.'; $wb['limit_mailfetchmail_error_notint'] = 'Limit fetchmail musà byÅ¥ ÄÃslo.'; $wb['limit_mailquota_error_notint'] = 'Limit email kvóta musà byÅ¥ ÄÃslo.'; @@ -206,4 +210,3 @@ $wb['password_click_to_set_txt'] = 'Click to set'; $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; -?> diff --git a/interface/web/client/lib/lang/tr_client.lng b/interface/web/client/lib/lang/tr_client.lng index d87fe26da90ab23836ef720031cf9f2498f04f90..ca1e2f74293e0f9064719c1670bfcaf4e7dd5075 100644 --- a/interface/web/client/lib/lang/tr_client.lng +++ b/interface/web/client/lib/lang/tr_client.lng @@ -7,12 +7,14 @@ $wb['limit_mailaliasdomain_txt'] = 'En Fazla Takma Etki Alanı Sayısı'; $wb['limit_mailforward_txt'] = 'En Fazla E-posta Yönlendirme Sayısı'; $wb['limit_mailcatchall_txt'] = 'En Fazla Tümünü Al Hesabı Sayısı'; $wb['limit_mailrouting_txt'] = 'En Fazla E-posta Yöneltici Sayısı'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'En Fazla E-posta Süzgeci Sayısı'; $wb['limit_fetchmail_txt'] = 'En Fazla E-posta Alma Hesabı Sayısı'; $wb['limit_mailquota_txt'] = 'E-posta Kutusu Kotası'; $wb['limit_spamfilter_wblist_txt'] = 'En Fazla Önemsiz Ä°leti Beyaz/Kara Liste Süzgeci Sayısı'; $wb['limit_spamfilter_user_txt'] = 'En Fazla Önemsiz Ä°leti Süzgeci Kullanıcısı Sayısı'; $wb['limit_spamfilter_policy_txt'] = 'En Fazla Önemsiz Ä°leti Süzgeci Kuralı Sayısı'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Varsayılan E-posta Sunucusu'; $wb['company_name_txt'] = 'KuruluÅŸ Adı'; $wb['contact_firstname_txt'] = 'Ä°lgili Adı'; @@ -39,6 +41,7 @@ $wb['company_txt'] = 'KuruluÅŸ'; $wb['title_txt'] = 'Unvan'; $wb['firstname_txt'] = 'Ad'; $wb['surname_txt'] = 'Soyad'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -73,6 +76,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'E-posta takma etki alanı sınırı $wb['limit_mailforward_error_notint'] = 'E-posta yönlendirme sınırı bir sayı olmalıdır.'; $wb['limit_mailcatchall_error_notint'] = 'E-posta tümünü al hesabı sınırı bir sayı olmalıdır.'; $wb['limit_mailrouting_error_notint'] = 'E-posta yöneltici sınırı bir sayı olmalıdır.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'E-posta süzgeci sınırı bir sayı olmalıdır.'; $wb['limit_mailfetchmail_error_notint'] = 'E-posta alma sınırı bir sayı olmalıdır.'; $wb['limit_mailquota_error_notint'] = 'E-posta kota sınırı bir sayı olmalıdır.'; @@ -204,4 +208,3 @@ $wb['email_error_empty'] = 'E-posta boÅŸ olamaz.'; $wb['limit_directive_snippets_txt'] = 'Web Sunucu Yapılandırma Seçimi Görüntülensin'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Sınırlar'; -?> diff --git a/interface/web/client/lib/lang/tr_client_template.lng b/interface/web/client/lib/lang/tr_client_template.lng index 8ae0954db550fb2ecce8cc12386808f92fc0e504..3d5edfeeba178c393661f8251189d3d52e13961b 100644 --- a/interface/web/client/lib/lang/tr_client_template.lng +++ b/interface/web/client/lib/lang/tr_client_template.lng @@ -3,6 +3,7 @@ $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one $wb['template_type_txt'] = 'Kalıp Türü'; $wb['template_name_txt'] = 'Kalıp Adı'; $wb['limit_client_error_notint'] = 'Müşteri sınırı bir sayı olmalıdır.'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Varsayılan E-posta Sunucusu'; $wb['limit_maildomain_txt'] = 'En Fazla E-posta Etki Alanı Sayısı'; $wb['limit_mailbox_txt'] = 'En Fazla E-posta Kutusu Sayısı'; @@ -12,12 +13,14 @@ $wb['limit_mailmailinglist_txt'] = 'En Fazla E-posta Listesi Sayısı'; $wb['limit_mailforward_txt'] = 'En Fazla E-posta Yönlendirici Sayısı'; $wb['limit_mailcatchall_txt'] = 'En Fazla Tümünü Al Hesabı Sayısı'; $wb['limit_mailrouting_txt'] = 'En Fazla E-posta Yöneltici Sayısı'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'En Fazla E-posta Süzgeci Sayısı'; $wb['limit_fetchmail_txt'] = 'En Fazla E-posta Alma Hesabı Sayısı'; $wb['limit_mailquota_txt'] = 'E-posta Kutusu Kotası'; $wb['limit_spamfilter_wblist_txt'] = 'En Fazla Önemsiz Ä°leti Beyaz/Kara Liste Süzgeci Sayısı'; $wb['limit_spamfilter_user_txt'] = 'En Fazla Önemsiz Ä°leti Süzgeci Kullanıcı Sayısı'; $wb['limit_spamfilter_policy_txt'] = 'En Fazla Önemsiz Ä°leti Süzgeci Kuralı Sayısı'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -47,6 +50,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'Takma e-posta etki alanı sınırı $wb['limit_mailforward_error_notint'] = 'E-posta yönlendirme sınırı bir sayı olmalıdır.'; $wb['limit_mailcatchall_error_notint'] = 'E-posta tümünü al sınırı bir sayı olmalıdır.'; $wb['limit_mailrouting_error_notint'] = 'E-posta yöneltici sınırı bir sayı olmalıdır.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'E-posta süzgeci sınırı bir sayı olmalıdır.'; $wb['limit_mailfetchmail_error_notint'] = 'E-posta alma sınırı bir sayı olmalıdır.'; $wb['limit_mailquota_error_notint'] = 'E-posta kotası sınırı bir sayı olmalıdır.'; @@ -125,4 +129,3 @@ $wb['xmpp_servers_txt'] = 'XMPP Sunucuları'; $wb['db_servers_txt'] = 'Veritabanı Sunucuları'; $wb['mail_servers_txt'] = 'E-posta Sunucuları'; $wb['Limits'] = 'Sınırlar'; -?> diff --git a/interface/web/client/lib/lang/tr_reseller.lng b/interface/web/client/lib/lang/tr_reseller.lng index d7bc06429e137f5cd6abf3a3205870f7bee8866d..31da0d1bc42672253f6013a456924016c8a1052c 100644 --- a/interface/web/client/lib/lang/tr_reseller.lng +++ b/interface/web/client/lib/lang/tr_reseller.lng @@ -7,12 +7,14 @@ $wb['limit_mailaliasdomain_txt'] = 'En Fazla Takma Etki Alanı Sayısı'; $wb['limit_mailforward_txt'] = 'En Fazla E-posta Yönlendirici Sayısı'; $wb['limit_mailcatchall_txt'] = 'En Fazla E-posta Tümünü Al Hesabı Sayısı'; $wb['limit_mailrouting_txt'] = 'En Fazla E-posta Yöneltici Sayısı'; +$wb['limit_mail_wblist_txt'] = 'Max. number of email white / blacklist entries'; $wb['limit_mailfilter_txt'] = 'En Fazla E-posta Süzgeci Sayısı'; $wb['limit_fetchmail_txt'] = 'En Fazla E-posta Alma Hesabı Sayısı'; $wb['limit_mailquota_txt'] = 'E-posta Kutusu Kotası'; $wb['limit_spamfilter_wblist_txt'] = 'En Fazla Önemsiz Ä°leti Beyaz/Kara Liste Süzgeci Sayısı'; $wb['limit_spamfilter_user_txt'] = 'En Fazla Önemsiz Ä°leti Kullanıcısı Sayısı'; $wb['limit_spamfilter_policy_txt'] = 'En Fazla Önemsiz Ä°leti Kuralı Sayısı'; +$wb['limit_mail_backup_txt'] = 'E-mail backup function available'; $wb['default_mailserver_txt'] = 'Varsayılan E-posta Sunucusu'; $wb['company_name_txt'] = 'KuruluÅŸ Adı'; $wb['contact_firstname_txt'] = 'Ä°lgili Adı'; @@ -39,6 +41,7 @@ $wb['company_txt'] = 'KuruluÅŸ'; $wb['title_txt'] = 'Unvan'; $wb['firstname_txt'] = 'Adı'; $wb['surname_txt'] = 'Soyadı'; +$wb['limit_relayhost_txt'] = 'Show SMTP relay host options'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; @@ -73,6 +76,7 @@ $wb['limit_mailalias_error_notint'] = 'Takma e-posta sınırı bir sayı olmalı $wb['limit_mailforward_error_notint'] = 'E-posta yönlendirici sınırı bir sayı olmalıdır.'; $wb['limit_mailcatchall_error_notint'] = 'E-posta tümünü al hesabı sınırı bir sayı olmalıdır.'; $wb['limit_mailrouting_error_notint'] = 'E-posta yöneltici sınırı bir sayı olmalıdır.'; +$wb['limit_mail_wblist_error_notint'] = 'The email white / blacklist limit must be a number.'; $wb['limit_mailfilter_error_notint'] = 'E-posta süzgeci sınırı bir sayı olmalıdır.'; $wb['limit_mailfetchmail_error_notint'] = 'E-posta alıcısı sınırı bir sayı olmalıdır.'; $wb['limit_mailquota_error_notint'] = 'E-posta kota sınırı bir sayı olmalıdır.'; @@ -210,4 +214,3 @@ $wb['limit_database_quota_error_notint'] = 'Veritabanı kotası sınırı bir sa $wb['Reseller'] = 'Reseller'; $wb['Address'] = 'Address'; $wb['Limits'] = 'Sınırlar'; -?> diff --git a/interface/web/client/reseller_edit.php b/interface/web/client/reseller_edit.php index 3078e01fbc47a8c71f1ec1734fa03f642c4b6baf..7cbd6687bc40eefad4f0beaf174cad996595ea17 100644 --- a/interface/web/client/reseller_edit.php +++ b/interface/web/client/reseller_edit.php @@ -94,7 +94,7 @@ class page_action extends tform_actions { } } } - + if($this->id != 0) { $this->oldTemplatesAssigned = $app->db->queryAllRecords('SELECT * FROM `client_template_assigned` WHERE `client_id` = ?', $this->id); if(!is_array($this->oldTemplatesAssigned) || count($this->oldTemplatesAssigned) < 1) { @@ -175,21 +175,37 @@ class page_action extends tform_actions { $app->tpl->setVar('template_additional_list', $text); $app->tpl->setVar('app_module', 'client'); - + + // Check wether per domain relaying is enabled or not + $global_config = $app->getconf->get_global_config('mail'); + if($global_config['show_per_domain_relay_options'] == 'y') { + $app->tpl->setVar("show_per_domain_relay_options", 1); + } else { + $app->tpl->setVar("show_per_domain_relay_options", 0); + } + + // APS is enabled or not + $global_config = $app->getconf->get_global_config('sites'); + if($global_config['show_aps_menu'] == 'y') { + $app->tpl->setVar("show_aps_menu", 1); + } else { + $app->tpl->setVar("show_aps_menu", 0); + } + //* Set the 'customer no' default value if($this->id == 0) { //* get the system config $app->uses('getconf'); $system_config = $app->getconf->get_global_config(); if($system_config['misc']['customer_no_template'] != '') { - + //* Set customer no default $customer_no = $app->functions->intval($system_config['misc']['customer_no_start']+$system_config['misc']['customer_no_counter']); $customer_no_string = str_replace('[CUSTOMER_NO]',$customer_no,$system_config['misc']['customer_no_template']); $app->tpl->setVar('customer_no',$customer_no_string); } } - + parent::onShowEnd(); } @@ -200,9 +216,9 @@ class page_action extends tform_actions { */ function onAfterInsert() { global $app, $conf; - + $app->uses('auth'); - + // Create the group for the reseller $groupid = $app->db->datalogInsert('sys_group', array("name" => $this->dataRecord["username"], "description" => '', "client_id" => $this->id), 'groupid'); $groups = $groupid; @@ -217,7 +233,7 @@ class page_action extends tform_actions { $language = $this->dataRecord["language"]; $password = $app->auth->crypt_password(stripslashes($password)); - + // Create the controlpaneluser for the reseller $sql = "INSERT INTO sys_user (`username`,`passwort`,`modules`,`startmodule`,`app_theme`,`typ`, `active`,`language`,`groups`,`default_group`,`client_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; @@ -238,26 +254,26 @@ class page_action extends tform_actions { $sql = "UPDATE client SET default_mailserver = ?, default_webserver = ?, default_dnsserver = ?, default_slave_dnsserver = ?, default_dbserver = ? WHERE client_id = ?"; $app->db->query($sql, $default_mailserver, $default_webserver, $default_dnsserver, $default_dnsserver, $default_dbserver, $this->id); - + if(isset($this->dataRecord['template_master'])) { $app->uses('client_templates'); $app->client_templates->update_client_templates($this->id, $this->_template_additional); } - + if($this->dataRecord['customer_no'] == $this->dataRecord['customer_no_org']) { //* get the system config $app->uses('getconf'); $system_config = $app->getconf->get_global_config(); if($system_config['misc']['customer_no_template'] != '') { - + //* save new counter value $system_config['misc']['customer_no_counter']++; $system_config_str = $app->ini_parser->get_ini_string($system_config); $app->db->datalogUpdate('sys_ini', array("config" => $system_config_str), 'sysini_id', 1); - + } } - + //* Send welcome email $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); $sql = "SELECT * FROM client_message_template WHERE template_type = 'welcome' AND sys_groupid = ?"; @@ -283,7 +299,7 @@ class page_action extends tform_actions { $subject = str_replace('{'.$key.'}', $val, $subject); } } - + //* Get sender address if($app->auth->is_admin()) { $app->uses('getconf'); @@ -311,7 +327,7 @@ class page_action extends tform_actions { global $app, $conf; $app->uses('auth'); - + // username changed if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && isset($this->dataRecord['username']) && $this->dataRecord['username'] != '' && $this->oldDataRecord['username'] != $this->dataRecord['username']) { $username = $this->dataRecord["username"]; @@ -328,7 +344,7 @@ class page_action extends tform_actions { if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && isset($this->dataRecord["password"]) && $this->dataRecord["password"] != '') { $password = $this->dataRecord["password"]; $client_id = $this->id; - + $password = $app->auth->crypt_password(stripslashes($password)); $sql = "UPDATE sys_user SET passwort = ? WHERE client_id = ?"; $app->db->query($sql, $password, $client_id); @@ -357,12 +373,12 @@ class page_action extends tform_actions { $sql = "UPDATE sys_user SET modules = ? WHERE client_id = ?"; $app->db->query($sql, $modules, $client_id); } - + if(isset($this->dataRecord['template_master'])) { $app->uses('client_templates'); $app->client_templates->update_client_templates($this->id, $this->_template_additional); } - + if(!isset($this->dataRecord['locked'])) $this->dataRecord['locked'] = 'n'; if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && $this->dataRecord["locked"] != $this->oldDataRecord['locked']) { /** lock all the things like web, mail etc. - easy to extend */ @@ -412,7 +428,7 @@ class page_action extends tform_actions { $active_col = 'disablesmtp'; $reverse = true; } - + if(!isset($prev_active[$current])) $prev_active[$current] = array(); if(!isset($prev_sysuser[$current])) $prev_sysuser[$current] = array(); @@ -444,7 +460,7 @@ class page_action extends tform_actions { $active_col = 'disablesmtp'; $reverse = true; } - + $entries = $app->db->queryAllRecords('SELECT ?? as `id` FROM ?? WHERE `sys_groupid` = ?', $keycolumn, $current, $sys_groupid); foreach($entries as $item) { $set_active = ($reverse == true ? 'n' : 'y'); @@ -469,7 +485,7 @@ class page_action extends tform_actions { unset($entries); unset($to_disable); } - + if(!isset($this->dataRecord['canceled'])) $this->dataRecord['canceled'] = 'n'; if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && $this->dataRecord["canceled"] != $this->oldDataRecord['canceled']) { if($this->dataRecord['canceled'] == 'y') { diff --git a/interface/web/client/templates/client_edit_limits.htm b/interface/web/client/templates/client_edit_limits.htm index 1f0a855eef75f9601eed6d3655fd46d4b11de8fb..9a2578b697b20e8424aee5dee86fa531c3cf261d 100644 --- a/interface/web/client/templates/client_edit_limits.htm +++ b/interface/web/client/templates/client_edit_limits.htm @@ -212,6 +212,9 @@ <div class="form-group"> <label for="limit_mailrouting" class="col-sm-3 control-label">{tmpl_var name='limit_mailrouting_txt'}</label> <div class="col-sm-9"><input type="text" name="limit_mailrouting" id="limit_mailrouting" value="{tmpl_var name='limit_mailrouting'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="limit_mail_wblist" class="col-sm-3 control-label">{tmpl_var name='limit_mail_wblist_txt'}</label> + <div class="col-sm-9"><input type="text" name="limit_mail_wblist" id="limit_mail_wblist" value="{tmpl_var name='limit_mail_wblist'}" class="form-control" /></div></div> <div class="form-group"> <label for="limit_mailfilter" class="col-sm-3 control-label">{tmpl_var name='limit_mailfilter_txt'}</label> <div class="col-sm-9"><input type="text" name="limit_mailfilter" id="limit_mailfilter" value="{tmpl_var name='limit_mailfilter'}" class="form-control" /></div></div> @@ -232,6 +235,20 @@ <label for="limit_spamfilter_policy" class="col-sm-3 control-label">{tmpl_var name='limit_spamfilter_policy_txt'}</label> <div class="col-sm-9"><input type="text" name="limit_spamfilter_policy" id="limit_spamfilter_policy" value="{tmpl_var name='limit_spamfilter_policy'}" class="form-control" /></div> </div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='limit_mail_backup_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='limit_mail_backup'} + </div> + </div> + <tmpl_if name="show_per_domain_relay_options"> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='limit_relayhost_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='limit_relayhost'} + </div> + </div> + </tmpl_if> </div> </div> </div> @@ -422,6 +439,7 @@ </div> </div> </div> + <tmpl_if name="show_aps_menu"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="headingAPS"> <h4 class="panel-title"> @@ -439,6 +457,7 @@ </div> </div> </div> + </tmpl_if> </div> <input type="hidden" name="id" value="{tmpl_var name='id'}"> diff --git a/interface/web/client/templates/client_template_edit_limits.htm b/interface/web/client/templates/client_template_edit_limits.htm index 005db0724a9d7c70a4986d5f00d7ea2e11073b08..ef15d18358f7b91fedbe5cee94030577c3ea25f2 100644 --- a/interface/web/client/templates/client_template_edit_limits.htm +++ b/interface/web/client/templates/client_template_edit_limits.htm @@ -169,6 +169,9 @@ <div class="form-group"> <label for="limit_mailrouting" class="col-sm-3 control-label">{tmpl_var name='limit_mailrouting_txt'}</label> <div class="col-sm-9"><input type="text" name="limit_mailrouting" id="limit_mailrouting" value="{tmpl_var name='limit_mailrouting'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="limit_mail_wblist" class="col-sm-3 control-label">{tmpl_var name='limit_mail_wblist_txt'}</label> + <div class="col-sm-9"><input type="text" name="limit_mail_wblist" id="limit_mail_wblist" value="{tmpl_var name='limit_mail_wblist'}" class="form-control" /></div></div> <div class="form-group"> <label for="limit_mailfilter" class="col-sm-3 control-label">{tmpl_var name='limit_mailfilter_txt'}</label> <div class="col-sm-9"><input type="text" name="limit_mailfilter" id="limit_mailfilter" value="{tmpl_var name='limit_mailfilter'}" class="form-control" /></div></div> @@ -189,6 +192,20 @@ <label for="limit_spamfilter_policy" class="col-sm-3 control-label">{tmpl_var name='limit_spamfilter_policy_txt'}</label> <div class="col-sm-9"><input type="text" name="limit_spamfilter_policy" id="limit_spamfilter_policy" value="{tmpl_var name='limit_spamfilter_policy'}" class="form-control" /></div> </div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='limit_mail_backup_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='limit_mail_backup'} + </div> + </div> + <tmpl_if name="show_per_domain_relay_options"> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='limit_relayhost_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='limit_relayhost'} + </div> + </div> + </tmpl_if> </div> </div> </div> @@ -380,6 +397,7 @@ </div> </div> <!-- APS --> + <tmpl_if name="show_aps_menu"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="headingAPS"> <h4 class="panel-title"> @@ -397,6 +415,7 @@ </div> </div> </div> + </tmpl_if> <tmpl_if name="is_admin"> <!-- Client --> <div class="panel panel-default"> diff --git a/interface/web/client/templates/reseller_edit_limits.htm b/interface/web/client/templates/reseller_edit_limits.htm index e1e69d4a14a51d0bb90db0e49fcc2630e259acf4..eee685ac518bb8d6051f43ff931d1312de2ba3ac 100644 --- a/interface/web/client/templates/reseller_edit_limits.htm +++ b/interface/web/client/templates/reseller_edit_limits.htm @@ -213,6 +213,9 @@ <div class="form-group"> <label for="limit_mailrouting" class="col-sm-3 control-label">{tmpl_var name='limit_mailrouting_txt'}</label> <div class="col-sm-9"><input type="text" name="limit_mailrouting" id="limit_mailrouting" value="{tmpl_var name='limit_mailrouting'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="limit_mail_wblist" class="col-sm-3 control-label">{tmpl_var name='limit_mail_wblist_txt'}</label> + <div class="col-sm-9"><input type="text" name="limit_mail_wblist" id="limit_mail_wblist" value="{tmpl_var name='limit_mail_wblist'}" class="form-control" /></div></div> <div class="form-group"> <label for="limit_mailfilter" class="col-sm-3 control-label">{tmpl_var name='limit_mailfilter_txt'}</label> <div class="col-sm-9"><input type="text" name="limit_mailfilter" id="limit_mailfilter" value="{tmpl_var name='limit_mailfilter'}" class="form-control" /></div></div> @@ -233,6 +236,20 @@ <label for="limit_spamfilter_policy" class="col-sm-3 control-label">{tmpl_var name='limit_spamfilter_policy_txt'}</label> <div class="col-sm-9"><input type="text" name="limit_spamfilter_policy" id="limit_spamfilter_policy" value="{tmpl_var name='limit_spamfilter_policy'}" class="form-control" /></div> </div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='limit_mail_backup_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='limit_mail_backup'} + </div> + </div> + <tmpl_if name="show_per_domain_relay_options"> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='limit_relayhost_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='limit_relayhost'} + </div> + </div> + </tmpl_if> </div> </div> </div> @@ -424,6 +441,7 @@ </div> </div> <!-- APS --> + <tmpl_if name="show_aps_menu"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="headingAPS"> <h4 class="panel-title"> @@ -441,6 +459,7 @@ </div> </div> </div> + </tmpl_if> <!-- Client --> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="headingClient"> diff --git a/interface/web/dashboard/dashlets/limits.php b/interface/web/dashboard/dashlets/limits.php index a299bbcaf35f891766ca930ed38e96451aaed649..e5a8cc459fa2f141eceb471ea829b5b1e048e7b0 100644 --- a/interface/web/dashboard/dashlets/limits.php +++ b/interface/web/dashboard/dashlets/limits.php @@ -47,6 +47,10 @@ class dashlet_limits 'db_table' => 'mail_transport', 'db_where' => ""); + $limits[] = array('field' => 'limit_mail_wblist', + 'db_table' => 'mail_access', + 'db_where' => ""); + $limits[] = array('field' => 'limit_mailfilter', 'db_table' => 'mail_user_filter', 'db_where' => ""); diff --git a/interface/web/dns/dns_dmarc_edit.php b/interface/web/dns/dns_dmarc_edit.php index b2d07b0a9ea49b2691a59b1771edb50ff338f959..e194aeb835ca21720b69a453044e90145097858e 100644 --- a/interface/web/dns/dns_dmarc_edit.php +++ b/interface/web/dns/dns_dmarc_edit.php @@ -226,16 +226,20 @@ class page_action extends tform_actions { $domain_name = rtrim($soa['origin'], '.'); // DMARC requieres at least one active dkim-record... - $sql = "SELECT * FROM dns_rr WHERE name LIKE ? AND type='TXT' AND data like 'v=DKIM1;%' AND active='Y'"; - $temp = $app->db->queryAllRecords($sql, '%._domainkey.'.$domain_name.'.'); + $sql = "SELECT * FROM dns_rr + LEFT JOIN dns_soa ON (dns_rr.zone=dns_soa.id) + WHERE dns_soa.origin = ? AND dns_rr.name LIKE ? AND type='TXT' AND data like 'v=DKIM1;%' AND dns_rr.active='Y'"; + $temp = $app->db->queryAllRecords($sql, $soa['origin'], '%._domainkey%'); if (empty($temp)) { if (isset($app->tform->errorMessage )) $app->tform->errorMessage = '<br/>' . $app->tform->errorMessage; $app->tform->errorMessage .= $app->tform->wordbook['dmarc_no_dkim_txt'].$email; } // ... and an active spf-record (this breaks the current draft but DMARC is useless if you use DKIM or SPF - $sql = "SELECT * FROM dns_rr WHERE name LIKE ? AND type='TXT' AND (data LIKE 'v=spf1%' AND active = 'y')"; - $temp = $app->db->queryAllRecords($sql, $domain_name.'.'); + $sql = "SELECT * FROM dns_rr + LEFT JOIN dns_soa ON (dns_rr.zone=dns_soa.id) + WHERE dns_soa.origin = ? AND (dns_rr.name LIKE ? OR dns_rr.name = '') AND type='TXT' AND data like 'v=spf1%' AND dns_rr.active='Y'"; + $temp = $app->db->queryAllRecords($sql, $soa['origin'], $soa['origin']); // abort if more than 1 active spf-records (backward-compatibility) if (is_array($temp[1])) { if (isset($app->tform->errorMessage )) $app->tform->errorMessage = '<br/>' . $app->tform->errorMessage; diff --git a/interface/web/dns/dns_wizard.php b/interface/web/dns/dns_wizard.php index bef4422ef3bff11351637a3e5d0f57545ee87fd8..90e2fef1c46935ae47968f376d659b0a27cc90d5 100644 --- a/interface/web/dns/dns_wizard.php +++ b/interface/web/dns/dns_wizard.php @@ -276,18 +276,20 @@ if($_POST['create'] == 1) { } + # fixme: this regex is pretty poor for domain validation if(isset($_POST['domain']) && $_POST['domain'] == '') $error .= $app->lng('error_domain_empty').'<br />'; - elseif(isset($_POST['domain']) && !preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9\-]{2,63}$/', $_POST['domain'])) $error .= $app->lng('error_domain_regex').'<br />'; + elseif(isset($_POST['domain']) && !preg_match('/^[\w\.\-]{1,64}\.[a-zA-Z0-9\-]{2,63}$/', $_POST['domain'])) $error .= $app->lng('error_domain_regex').'<br />'; if(isset($_POST['ip']) && $_POST['ip'] == '') $error .= $app->lng('error_ip_empty').'<br />'; if(isset($_POST['ipv6']) && $_POST['ipv6'] == '') $error .= $app->lng('error_ipv6_empty').'<br />'; + # fixme: this regex is pretty poor for hostname validation if(isset($_POST['ns1']) && $_POST['ns1'] == '') $error .= $app->lng('error_ns1_empty').'<br />'; - elseif(isset($_POST['ns1']) && !preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9]{2,63}$/', $_POST['ns1'])) $error .= $app->lng('error_ns1_regex').'<br />'; + elseif(isset($_POST['ns1']) && !preg_match('/^[\w\.\-]{1,64}\.[a-zA-Z0-9]{2,63}$/', $_POST['ns1'])) $error .= $app->lng('error_ns1_regex').'<br />'; if(isset($_POST['ns2']) && $_POST['ns2'] == '') $error .= $app->lng('error_ns2_empty').'<br />'; - elseif(isset($_POST['ns2']) && !preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9]{2,63}$/', $_POST['ns2'])) $error .= $app->lng('error_ns2_regex').'<br />'; + elseif(isset($_POST['ns2']) && !preg_match('/^[\w\.\-]{1,64}\.[a-zA-Z0-9]{2,63}$/', $_POST['ns2'])) $error .= $app->lng('error_ns2_regex').'<br />'; if(isset($_POST['email']) && $_POST['email'] == '') $error .= $app->lng('error_email_empty').'<br />'; elseif(isset($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) $error .= $app->lng('error_email_regex').'<br />'; @@ -326,7 +328,7 @@ if($_POST['create'] == 1) { // $enable_dnssec = (($_POST['dnssec'] == 'Y') ? 'Y' : 'N'); // if(isset($_POST['dnssec'])) $vars['dnssec_wanted'] = 'Y'; if(isset($_POST['dnssec'])) $tpl_content = str_replace('[ZONE]', '[ZONE]'."\n".'dnssec_wanted=Y', $tpl_content); - if(isset($_POST['dkim']) && preg_match('/^[\w\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,63}[\.]{0,1}$/', $_POST['domain'])) { + if(isset($_POST['dkim']) && preg_match('/^[\w\.\-\/]{1,255}\.[a-zA-Z0-9\-]{2,63}[\.]{0,1}$/', $_POST['domain'])) { $sql = $app->db->queryOneRecord("SELECT dkim_public, dkim_selector FROM mail_domain WHERE domain = ? AND dkim = 'y' AND ".$app->tform->getAuthSQL('r'), $_POST['domain']); $public_key = $sql['dkim_public']; if ($public_key!='') { diff --git a/interface/web/dns/form/dns_slave.tform.php b/interface/web/dns/form/dns_slave.tform.php index 55e085861a128c37e24c87a3dc94a75a476e70a2..bf684f98683d72d8d49f02be75925713765c877a 100644 --- a/interface/web/dns/form/dns_slave.tform.php +++ b/interface/web/dns/form/dns_slave.tform.php @@ -96,7 +96,7 @@ $form["tabs"]['dns_slave'] = array ( 'errmsg'=> 'origin_error_unique'), */ 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,63}[\.]{0,1}$/', + 'regex' => '/^[a-zA-Z0-9\.\-\/]{1,255}\.[a-zA-Z0-9\-]{2,63}[\.]{0,1}$/', 'errmsg'=> 'origin_error_regex'), ), 'default' => '', diff --git a/interface/web/dns/form/dns_soa.tform.php b/interface/web/dns/form/dns_soa.tform.php index fe717577881d2253983309d654ca381b65e6edcd..b9e402f4412e94ca36d863c4aed79c8ca1b0b055 100644 --- a/interface/web/dns/form/dns_soa.tform.php +++ b/interface/web/dns/form/dns_soa.tform.php @@ -120,7 +120,7 @@ $form["tabs"]['dns_soa'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'origin_error_unique'), 2 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,63}[\.]{0,1}$/', + 'regex' => '/^[a-zA-Z0-9\.\-\/]{1,255}\.[a-zA-Z0-9\-]{2,63}[\.]{0,1}$/', 'errmsg'=> 'origin_error_regex'), ), 'default' => '', diff --git a/interface/web/login/index.php b/interface/web/login/index.php index d820e917c98e29ad290a95ec1408e9bb125665da..58456dea0e4b855b642395b7756b12c2aec65136 100644 --- a/interface/web/login/index.php +++ b/interface/web/login/index.php @@ -58,7 +58,7 @@ if($app->is_under_maintenance()) { if(count($_POST) > 0) { //** Check variables - if(!preg_match("/^[\w\.\-\_\@]{1,128}$/", $_POST['username'])) $error = $app->lng('user_regex_error'); + if(!preg_match("/^[\w\.\-\_\@]{1,128}$/", $app->functions->idn_encode($_POST['username']))) $error = $app->lng('user_regex_error'); if(!preg_match("/^.{1,256}$/i", $_POST['password'])) $error = $app->lng('pw_error_length'); //** importing variables @@ -152,7 +152,7 @@ if(count($_POST) > 0) { if(stristr($username, '@')) { //* mailuser login $sql = "SELECT * FROM mail_user WHERE login = ? or email = ?"; - $mailuser = $app->db->queryOneRecord($sql, $username, $username); + $mailuser = $app->db->queryOneRecord($sql, $username, $app->functions->idn_encode($username)); $user = false; if($mailuser) { $saved_password = stripslashes($mailuser['password']); diff --git a/interface/web/login/lib/lang/nl.lng b/interface/web/login/lib/lang/nl.lng index 2c98275fd4fef242932c23287428c894f42ab2a0..cd5f3b713df85fc5354847b9ec6a19d5a7d0bbfe 100644 --- a/interface/web/login/lib/lang/nl.lng +++ b/interface/web/login/lib/lang/nl.lng @@ -16,7 +16,7 @@ $wb['username_txt'] = 'Gebruikersnaam'; $wb['password_txt'] = 'Wachtwoord'; $wb['login_button_txt'] = 'Inloggen'; $wb['pw_lost_txt'] = 'Wachtwoord vergeten'; -$wb['error_maintenance_mode'] = 'This ISPConfig installation is currently under maintenance. We should be back shortly. Thank you for your patience.'; +$wb['error_maintenance_mode'] = 'Deze dienst is momenteel in onderhoud. We zijn spoedig weer beschikbaar.'; $wb['login_txt'] = 'Inloggen'; $wb['pw_reset_txt'] = 'Wachtwoord herstellen'; $wb['pw_button_txt'] = 'Wachtwoord versturen'; diff --git a/interface/web/login/password_reset.php b/interface/web/login/password_reset.php index 2e1d5e6aad0c912a7f3c9f7a82efb259735b78df..db4ad71c22d2614566b0c2658cb4254ee8e7afdb 100644 --- a/interface/web/login/password_reset.php +++ b/interface/web/login/password_reset.php @@ -153,6 +153,7 @@ if(isset($_POST['username']) && is_string($_POST['username']) && $_POST['usernam if($send_result !== false) { $app->tpl->setVar("msg", $wb['pw_reset']); + $app->tpl->setInclude('content_tpl', 'templates/index.htm'); } else { $app->tpl->setVar("error", $wb['pw_reset_error_smtp_connection']); } diff --git a/interface/web/login/templates/index.htm b/interface/web/login/templates/index.htm index e03e58f1f1451c0716e433f63ae557534f2137ed..64b1825073fe663dd22e5fde695ec56c1426e8b5 100644 --- a/interface/web/login/templates/index.htm +++ b/interface/web/login/templates/index.htm @@ -1,3 +1,6 @@ + <tmpl_if name="msg"> + <div class="alert alert-success" role="alert"><tmpl_var name="msg"></div> + </tmpl_if> <tmpl_if name="error"> <div class="alert alert-danger" role="alert"><tmpl_var name="error"></div> </tmpl_if> diff --git a/interface/web/mail/ajax_get_json.php b/interface/web/mail/ajax_get_json.php index dfc9dc220c0b9ea5ff7d5c4c0c5ed90f666449fe..c40c3bf401bdb0a06af0487a0f9104467bca3317 100644 --- a/interface/web/mail/ajax_get_json.php +++ b/interface/web/mail/ajax_get_json.php @@ -113,7 +113,7 @@ header('Content-type: application/json'); echo $json; function validate_domain($domain) { - $regex = '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,63}$/'; + $regex = '/^[\w\.\-]{1,255}\.[a-zA-Z0-9\-]{2,63}$/'; if ( preg_match($regex, $domain) === 1 ) return true; else return false; } diff --git a/interface/web/mail/form/mail_aliasdomain.tform.php b/interface/web/mail/form/mail_aliasdomain.tform.php index a0d10249898695f4d3b8dd124684f167adb4045f..c94e1a931113c21275c0fe5c6ea5cf74deafdfc5 100644 --- a/interface/web/mail/form/mail_aliasdomain.tform.php +++ b/interface/web/mail/form/mail_aliasdomain.tform.php @@ -86,7 +86,7 @@ $form["tabs"]['alias'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'source_error_unique'), 2 => array ( 'type' => 'REGEX', - 'regex' => '/^\@[\w\.\-]{2,64}\.[a-zA-Z0-9\-]{2,20}$/', + 'regex' => '/^\@[\w\.\-]{1,255}\.[a-zA-Z0-9\-]{2,63}$/', 'errmsg'=> 'source_error_regex'), ), 'default' => '', diff --git a/interface/web/mail/form/mail_blacklist.tform.php b/interface/web/mail/form/mail_blacklist.tform.php index 957f35b95bfad2bb6263b79afd4f3e4f62104941..35272e4cd4be8f9d22812eb5faa2fd39349b7325 100644 --- a/interface/web/mail/form/mail_blacklist.tform.php +++ b/interface/web/mail/form/mail_blacklist.tform.php @@ -98,7 +98,7 @@ $form["tabs"]['blacklist'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => 'y', - 'value' => array('recipient' => 'Recipient', 'sender' => 'Sender', 'client' => 'Client') + 'value' => array('recipient' => 'recipient_txt', 'sender' => 'sender_txt', 'client' => 'client_txt') ), 'active' => array ( 'datatype' => 'VARCHAR', @@ -112,5 +112,8 @@ $form["tabs"]['blacklist'] = array ( ) ); +if (! $app->auth->is_admin()) { + $form['tabs']['blacklist']['fields']['type']['value'] = array('recipient' => 'Recipient', 'sender' => 'Sender'); +} ?> diff --git a/interface/web/mail/form/mail_domain.tform.php b/interface/web/mail/form/mail_domain.tform.php index 5c8fa0185ac9bf0364315836152b1e7e87ff0548..6e768193e03c0386e5d9e7108690a8317728ab51 100644 --- a/interface/web/mail/form/mail_domain.tform.php +++ b/interface/web/mail/form/mail_domain.tform.php @@ -136,6 +136,30 @@ $form["tabs"]['domain'] = array ( 'errmsg'=> 'dkim_selector_error'), ), ), + 'relay_host' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'relay_user' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'relay_pass' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), 'active' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', diff --git a/interface/web/mail/form/mail_domain_catchall.tform.php b/interface/web/mail/form/mail_domain_catchall.tform.php index c43aeb333902a9abe52bb1f7e0f1c5da0d8aa009..ac4631bedbe962cd08c19fefd5b3821fd74d43a2 100644 --- a/interface/web/mail/form/mail_domain_catchall.tform.php +++ b/interface/web/mail/form/mail_domain_catchall.tform.php @@ -86,7 +86,7 @@ $form["tabs"]['catchall'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'domain_error_unique'), 2 => array ( 'type' => 'REGEX', - 'regex' => '/^\@[\w\.\-]{2,255}\.[a-zA-Z\-]{2,63}$/', + 'regex' => '/^\@[\w\.\-]{1,255}\.[a-zA-Z\-]{2,63}$/', 'errmsg'=> 'domain_error_regex'), ), 'default' => '', @@ -125,6 +125,12 @@ $form["tabs"]['catchall'] = array ( 'default' => '', 'value' => array('alias' => 'Alias', 'forward'=>'Forward', 'catchall'=>'Catchall') ), + 'allow_send_as' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(1 => 'y', 0 => 'n') + ), 'active' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', diff --git a/interface/web/mail/form/mail_mailinglist.tform.php b/interface/web/mail/form/mail_mailinglist.tform.php index ba877f410cec3f6c57b4dbe571d2691c9f905d46..295bd8d5710fc33c1736656500ef322eeee6186f 100644 --- a/interface/web/mail/form/mail_mailinglist.tform.php +++ b/interface/web/mail/form/mail_mailinglist.tform.php @@ -87,7 +87,7 @@ $form["tabs"]['mailinglist'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'domain_error_empty'), 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z\-]{2,10}$/', + 'regex' => '/^[\w\.\-]{1,255}\.[a-zA-Z\-]{2,10}$/', 'errmsg'=> 'domain_error_regex'), ), 'default' => '', diff --git a/interface/web/mail/form/mail_transport.tform.php b/interface/web/mail/form/mail_transport.tform.php index b40ad86e8ad15a590f0f57efcd961fa272020776..deb83d629d9d8aa276e45f85f29d8bc57235050d 100644 --- a/interface/web/mail/form/mail_transport.tform.php +++ b/interface/web/mail/form/mail_transport.tform.php @@ -88,6 +88,14 @@ $form["tabs"]['transport'] = array ( 4 => array( 'event' => 'SAVE', 'type' => 'STRIPNL') ), + 'validators' => array( + 0 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_mail_transport', + 'function' => 'validate_domain', + 'errmsg'=> 'domain_error_unique', + ) + ), 'default' => '', 'value' => '', 'width' => '30', diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index 982d79474dc558b5aa3bc7239626599682904224..32e58686e28a16d312fd2884e3d3d0d1bc6e34cc 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -44,8 +44,8 @@ $global_config = $app->getconf->get_global_config(); $backup_available = true; if(!$app->auth->is_admin()) { $client_group_id = $_SESSION['s']['user']['default_group']; - $client = $app->db->queryOneRecord("SELECT limit_backup FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); - if($client['limit_backup'] != 'y') $backup_available = false; + $client = $app->db->queryOneRecord("SELECT limit_mail_backup FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); + if($client['limit_mail_backup'] != 'y') $backup_available = false; } $form["title"] = "Mailbox"; diff --git a/interface/web/mail/form/mail_whitelist.tform.php b/interface/web/mail/form/mail_whitelist.tform.php index edd32483712bedea9b430d2f5cba5de346a73fb7..01f3d5dab78294d19e9178b8bec4431cdc92cb77 100644 --- a/interface/web/mail/form/mail_whitelist.tform.php +++ b/interface/web/mail/form/mail_whitelist.tform.php @@ -104,7 +104,7 @@ $form["tabs"]['whitelist'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => 'y', - 'value' => array('recipient' => 'Recipient', 'sender' => 'Sender', 'client' => 'Client') + 'value' => array('recipient' => 'recipient_txt', 'sender' => 'sender_txt', 'client' => 'client_txt') ), 'active' => array ( 'datatype' => 'VARCHAR', @@ -118,5 +118,9 @@ $form["tabs"]['whitelist'] = array ( ) ); +if (! $app->auth->is_admin()) { + $form['tabs']['whitelist']['fields']['type']['value'] = array('recipient' => 'Recipient', 'sender' => 'Sender'); +} + ?> diff --git a/interface/web/mail/form/spamfilter_users.tform.php b/interface/web/mail/form/spamfilter_users.tform.php index 65f196b9879be55f37d170b3a447f8395f0ec946..1bb7b5f682f0ce0e221f4e3f00708ad6163ba1d3 100644 --- a/interface/web/mail/form/spamfilter_users.tform.php +++ b/interface/web/mail/form/spamfilter_users.tform.php @@ -78,7 +78,7 @@ $form["tabs"]['users'] = array ( 'policy_id' => array ( 'datatype' => 'INTEGER', 'formtype' => 'SELECT', - 'default' => '5', + 'default' => '0', 'datasource' => array ( 'type' => 'SQL', 'querystring' => 'SELECT id,policy_name FROM spamfilter_policy WHERE {AUTHSQL} ORDER BY policy_name', 'keyfield'=> 'id', diff --git a/interface/web/mail/form/xmpp_domain.tform.php b/interface/web/mail/form/xmpp_domain.tform.php index c703b0bea39b43c60df6234488dc994262a1b5d6..28262923b95f06125faf8c29c88ac4f567c144cd 100644 --- a/interface/web/mail/form/xmpp_domain.tform.php +++ b/interface/web/mail/form/xmpp_domain.tform.php @@ -103,7 +103,7 @@ $form["tabs"]['domain'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'domain_error_unique'), 2 => array ( 'type' => 'REGEX', - 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,63}$/', + 'regex' => '/^[\w\.\-]{1,255}\.[a-zA-Z0-9\-]{2,63}$/', 'errmsg'=> 'domain_error_regex'), ), 'default' => '', diff --git a/interface/web/mail/lib/lang/ar_mail_alias.lng b/interface/web/mail/lib/lang/ar_mail_alias.lng index 32a6b85e4e677aa5e0d117cc9abd4f195ef4f16d..fbfd79b501cc5e00aebbd003966d1eac8097db33 100644 --- a/interface/web/mail/lib/lang/ar_mail_alias.lng +++ b/interface/web/mail/lib/lang/ar_mail_alias.lng @@ -3,9 +3,9 @@ $wb['email_txt'] = 'Email'; $wb['destination_txt'] = 'Destination'; $wb['active_txt'] = 'Active'; $wb['email_error_isemail'] = 'Email address is invalid.'; -$wb['email_error_unique'] = 'Duplicate Emailaddress.'; +$wb['email_error_unique'] = 'Duplicate Email Address.'; $wb['no_domain_perm'] = 'You have no permission for this domain.'; -$wb['destination_error_isemail'] = 'Destination Emailaddress is invalid.'; +$wb['destination_error_isemail'] = 'Destination Email Address is invalid.'; $wb['limit_mailalias_txt'] = 'The max. number of email aliases for your account is reached.'; $wb['duplicate_mailbox_txt'] = 'There is already a mailbox with this email address'; $wb['domain_txt'] = 'Domain'; @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -?> diff --git a/interface/web/mail/lib/lang/ar_mail_blacklist.lng b/interface/web/mail/lib/lang/ar_mail_blacklist.lng index 5b2815c0d00a2e2c3f96064cfd11561472e8ed78..81a1b6d279d0d2c11c7fc35465394e97ff229d0b 100644 --- a/interface/web/mail/lib/lang/ar_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/ar_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Active'; $wb['source_error_notempty'] = 'Address is empty.'; $wb['type_txt'] = 'Type'; $wb['limit_mailfilter_txt'] = 'The max. number of email filters for your account is reached.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/ar_mail_domain.lng b/interface/web/mail/lib/lang/ar_mail_domain.lng index 4d99d0fb5ea2c827c5944d5768451fabfa389562..e53c5d9ec217cb583a70dd6237d8c3d8484bc0a4 100644 --- a/interface/web/mail/lib/lang/ar_mail_domain.lng +++ b/interface/web/mail/lib/lang/ar_mail_domain.lng @@ -19,5 +19,7 @@ $wb['dkim_private_key_error'] = 'Invalid DKIM-Private key'; $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; -$wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; -?> +$wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this accounte'; +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng index 55cc10358e1c6ddd5e81834034dd316efad24b5a..b55657faf691bdd0be80172f8e6f0cccdc4c7e08 100644 --- a/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'The max. number of email catchall accounts for $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/ar_mail_forward.lng b/interface/web/mail/lib/lang/ar_mail_forward.lng index 3f9cfa956b329bc9f19e1316f32429ea5a5da1c5..29d0d91a57f15cb67934d18116cff14450a7009f 100644 --- a/interface/web/mail/lib/lang/ar_mail_forward.lng +++ b/interface/web/mail/lib/lang/ar_mail_forward.lng @@ -10,6 +10,6 @@ $wb['greylisting_txt'] = 'Enable greylisting'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Duplicate Email Address.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -?> diff --git a/interface/web/mail/lib/lang/ar_mail_transport.lng b/interface/web/mail/lib/lang/ar_mail_transport.lng index c2498634693c8e60c96e28f6d666f8e9c2e8cbdf..16c33c02011d4bec352ffdde12a70234d51aeab7 100644 --- a/interface/web/mail/lib/lang/ar_mail_transport.lng +++ b/interface/web/mail/lib/lang/ar_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Sort by'; $wb['active_txt'] = 'Active'; $wb['limit_mailrouting_txt'] = 'The max. number of routes for your account is reached.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/ar_mail_whitelist.lng b/interface/web/mail/lib/lang/ar_mail_whitelist.lng index 92c365ba2b55b1f47c63880b3722132cf6842950..f6fda2d6d4d5c5c16fe7fca47177731c3140e9e5 100644 --- a/interface/web/mail/lib/lang/ar_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/ar_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Active'; $wb['source_error_notempty'] = 'Address is empty.'; $wb['type_txt'] = 'Type'; $wb['limit_mailfilter_txt'] = 'The max. number of email filters for your account is reached.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/ar_spamfilter_users.lng b/interface/web/mail/lib/lang/ar_spamfilter_users.lng index efe95b5c7f1bad9138a1a9c141787f1f06141c6d..05d0ca9bd627de80cdd373cfe5fe80af517ff484 100644 --- a/interface/web/mail/lib/lang/ar_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/ar_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/bg_mail_alias.lng b/interface/web/mail/lib/lang/bg_mail_alias.lng index 32a6b85e4e677aa5e0d117cc9abd4f195ef4f16d..fbfd79b501cc5e00aebbd003966d1eac8097db33 100644 --- a/interface/web/mail/lib/lang/bg_mail_alias.lng +++ b/interface/web/mail/lib/lang/bg_mail_alias.lng @@ -3,9 +3,9 @@ $wb['email_txt'] = 'Email'; $wb['destination_txt'] = 'Destination'; $wb['active_txt'] = 'Active'; $wb['email_error_isemail'] = 'Email address is invalid.'; -$wb['email_error_unique'] = 'Duplicate Emailaddress.'; +$wb['email_error_unique'] = 'Duplicate Email Address.'; $wb['no_domain_perm'] = 'You have no permission for this domain.'; -$wb['destination_error_isemail'] = 'Destination Emailaddress is invalid.'; +$wb['destination_error_isemail'] = 'Destination Email Address is invalid.'; $wb['limit_mailalias_txt'] = 'The max. number of email aliases for your account is reached.'; $wb['duplicate_mailbox_txt'] = 'There is already a mailbox with this email address'; $wb['domain_txt'] = 'Domain'; @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -?> diff --git a/interface/web/mail/lib/lang/bg_mail_blacklist.lng b/interface/web/mail/lib/lang/bg_mail_blacklist.lng index e250039e2edc54a09944c432c1c71252f3e6c840..7886cb6fa6a91cc77f46fe305159572f16eb17c6 100644 --- a/interface/web/mail/lib/lang/bg_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/bg_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Ðктивен'; $wb['source_error_notempty'] = 'Полето Ñ Ð°Ð´Ñ€ÐµÑа е празно.'; $wb['type_txt'] = 'Тип'; $wb['limit_mailfilter_txt'] = 'МакÑималниÑÑ‚ брой за емайл филтри в твоÑÑ‚ профил е доÑтигнат.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/bg_mail_domain.lng b/interface/web/mail/lib/lang/bg_mail_domain.lng index 6e30a26494a6f3eb6610d46c12567ae013ee3741..f2d329a62ec96e1a1a5afbea6af63694f3977503 100644 --- a/interface/web/mail/lib/lang/bg_mail_domain.lng +++ b/interface/web/mail/lib/lang/bg_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['policy_txt'] = 'Спамфилтър'; $wb['no_policy'] = '- не е разрешен -'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng b/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng index 06f1f01e11708e8921c96e39290bc03d8f6fa33d..346ddad909b7d161d97fdcf61ec1fb4a0e7f5e18 100644 --- a/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'МакÑималниÑÑ‚ брой запиÑи $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/bg_mail_forward.lng b/interface/web/mail/lib/lang/bg_mail_forward.lng index b5c80dd89d244a76039b09d25322a3dce8939b19..10193da7400de18125cec689119a2023c027bb3f 100644 --- a/interface/web/mail/lib/lang/bg_mail_forward.lng +++ b/interface/web/mail/lib/lang/bg_mail_forward.lng @@ -10,6 +10,6 @@ $wb['greylisting_txt'] = 'Enable greylisting'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Duplicate Email Address.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -?> diff --git a/interface/web/mail/lib/lang/bg_mail_transport.lng b/interface/web/mail/lib/lang/bg_mail_transport.lng index 57394dc218e8881a9fd8b26319b54a5c1b865981..0f4a8db0b8c3622568c06f5694c1f41732c0a0ac 100644 --- a/interface/web/mail/lib/lang/bg_mail_transport.lng +++ b/interface/web/mail/lib/lang/bg_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Сортирай по'; $wb['active_txt'] = 'Ðктивен'; $wb['limit_mailrouting_txt'] = 'The max. number of routes for your account is reached.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/bg_mail_whitelist.lng b/interface/web/mail/lib/lang/bg_mail_whitelist.lng index 35c892add4adb43a689d904b64becec6af78766a..deef7ae35660c1704ab6db65e867653521a9b0fb 100644 --- a/interface/web/mail/lib/lang/bg_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/bg_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Ðктивен'; $wb['source_error_notempty'] = 'Полето Ñ Ð°Ð´Ñ€ÐµÑа е празно.'; $wb['type_txt'] = 'Тип'; $wb['limit_mailfilter_txt'] = 'МакÑималниÑÑ‚ брой на емаил филтри за Ñ‚Ð²Ð¾Ñ Ð°ÐºÐ°ÑƒÐ½Ñ‚ е доÑтигнат.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/bg_spamfilter_users.lng b/interface/web/mail/lib/lang/bg_spamfilter_users.lng index efe95b5c7f1bad9138a1a9c141787f1f06141c6d..05d0ca9bd627de80cdd373cfe5fe80af517ff484 100644 --- a/interface/web/mail/lib/lang/bg_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/bg_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/br_mail_blacklist.lng b/interface/web/mail/lib/lang/br_mail_blacklist.lng index 516946ce198e1b25329a3e67cc311703040c5571..d33aa6c1388c9d52d36887f6278f4760a9bdd3ab 100644 --- a/interface/web/mail/lib/lang/br_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/br_mail_blacklist.lng @@ -6,3 +6,7 @@ $wb['active_txt'] = 'Ativo'; $wb['source_error_notempty'] = 'Destinatário está vazio.'; $wb['type_txt'] = 'Tipo'; $wb['limit_mailfilter_txt'] = 'O limite de filtros de email para esta conta foi alcançado.'; +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/br_mail_domain.lng b/interface/web/mail/lib/lang/br_mail_domain.lng index 8cf2cdce658196eb0c76a4ccd566d103626ef4de..7371f51894a2af03bbbdb6497ce85f513e0b78bc 100644 --- a/interface/web/mail/lib/lang/br_mail_domain.lng +++ b/interface/web/mail/lib/lang/br_mail_domain.lng @@ -20,3 +20,6 @@ $wb['no_policy'] = '-desabilitado-'; $wb['error_not_allowed_server_id'] = 'O servidor selecionado não é permitido para esta conta.'; $wb['dkim_selector_txt'] = 'Seletor DKIM'; $wb['dkim_selector_error'] = 'Seletor DKIM é inválido. Utilize apenas caracteres alfanuméricos em minúsculas (a-z ou 0-9) e no máximo 63 caracteres.'; +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/br_mail_domain_catchall.lng b/interface/web/mail/lib/lang/br_mail_domain_catchall.lng index 3d4f85af8dfc1110b3bf508e3705dfb76623aff4..3bc3b78d0455f7e490f2f91e153d0a4d093e59d9 100644 --- a/interface/web/mail/lib/lang/br_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/br_mail_domain_catchall.lng @@ -10,4 +10,5 @@ $wb['domain_txt'] = 'DomÃnio'; $wb['source_txt'] = 'Origem'; $wb['destination_error_isemail'] = 'Endereço de e-mail de destino é inválido.'; $wb['greylisting_txt'] = 'Habilitar greylist'; -?> +$wb['send_as_txt'] = 'Enviar como'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/br_mail_forward.lng b/interface/web/mail/lib/lang/br_mail_forward.lng index dd1eb9bb561d4c3e421225e11e4b5f17d1de472c..396262d7873dcc355a23ecc707ac205bbad750c4 100644 --- a/interface/web/mail/lib/lang/br_mail_forward.lng +++ b/interface/web/mail/lib/lang/br_mail_forward.lng @@ -9,6 +9,7 @@ $wb['source_txt'] = 'Endereço de email de origem'; $wb['destination_error_empty'] = 'O endereço de email de destino não pode ficar vazio.'; $wb['destination_error_isemail'] = 'O endereço de email de destino é inválido.'; $wb['email_error_isemail'] = 'Por favor informe um endereço de email válido.'; +$wb['email_error_unique'] = 'Endereço de email duplicado.'; $wb['send_as_txt'] = 'Enviar como'; $wb['send_as_exp'] = 'Permitir o destino enviar emails usando este endereço como origem (se o destino for interno)'; $wb['greylisting_txt'] = 'Habilitar greylist'; diff --git a/interface/web/mail/lib/lang/br_mail_transport.lng b/interface/web/mail/lib/lang/br_mail_transport.lng index 3f87343dbcdd47e9f56b27b571a60ba7b10a01be..afe35c1a7e66a60aeab27c235fd88c581df9d8df 100644 --- a/interface/web/mail/lib/lang/br_mail_transport.lng +++ b/interface/web/mail/lib/lang/br_mail_transport.lng @@ -8,3 +8,4 @@ $wb['sort_order_txt'] = 'Ordenar por'; $wb['active_txt'] = 'Ativo'; $wb['limit_mailrouting_txt'] = 'O limite de rotas de email para esta conta foi alcançado.'; $wb['transport_txt'] = 'Transporte'; +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/br_mail_whitelist.lng b/interface/web/mail/lib/lang/br_mail_whitelist.lng index e62e5a778e6817797bfbf956417ca5fdf6ce7230..f458dbbfb262bb339392f38d1b4a5124060d04df 100644 --- a/interface/web/mail/lib/lang/br_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/br_mail_whitelist.lng @@ -6,3 +6,7 @@ $wb['active_txt'] = 'Ativo'; $wb['source_error_notempty'] = 'Endereço de email está vazio.'; $wb['type_txt'] = 'Tipo'; $wb['limit_mailfilter_txt'] = 'O limite de filtros de email para esta conta foi alcançado.'; +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/br_spamfilter_users.lng b/interface/web/mail/lib/lang/br_spamfilter_users.lng index d18fbc13a9f29a018258c23b254bd2c2bacb45a4..bdc989833e5bc2af51ba8c3d5fe4b3f06221b59f 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_users.lng @@ -10,3 +10,4 @@ $wb['fullname_error_notempty'] = 'Nome está vazio.'; $wb['10 - highest'] = '10 - alta'; $wb['5 - medium'] = '5 - média'; $wb['1 - lowest'] = '1 - baixa'; +$wb['inherit_policy'] = '- Herdar configuração de domÃnio -'; diff --git a/interface/web/mail/lib/lang/ca_mail_alias.lng b/interface/web/mail/lib/lang/ca_mail_alias.lng index a1c3eacb67bdba9de1cc9644a3ee403204e78dbe..0b8d9b0e45bec427d980495d66f229d8822be46e 100644 --- a/interface/web/mail/lib/lang/ca_mail_alias.lng +++ b/interface/web/mail/lib/lang/ca_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> diff --git a/interface/web/mail/lib/lang/ca_mail_blacklist.lng b/interface/web/mail/lib/lang/ca_mail_blacklist.lng index 3f5f9709e84b156c84043a4cf5c4cce65d7fff91..b4232033216f6372a672cab7e27d7ab41fa5fcd1 100644 --- a/interface/web/mail/lib/lang/ca_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/ca_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Actif'; $wb['source_error_notempty'] = 'L\'adresse est vide.'; $wb['type_txt'] = 'Type'; $wb['limit_mailfilter_txt'] = 'Le nombre maximal de filtres d\'email pour votre compte a été atteint.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/ca_mail_domain.lng b/interface/web/mail/lib/lang/ca_mail_domain.lng index 65d664cf3a7e5a761b17f02b4c538de13e669f33..0b701a16c3ef8443fee0ea3bf26c271f8cad4aee 100644 --- a/interface/web/mail/lib/lang/ca_mail_domain.lng +++ b/interface/web/mail/lib/lang/ca_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng index feafd436f6bb47963d8429b11ae4ae80ab686458..5499c5a11d520d0f8dce647a7e46c050e65b2f30 100644 --- a/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Le nombre maximal de comptes collecteurs pour v $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'La destination n\'est pas valide.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/ca_mail_forward.lng b/interface/web/mail/lib/lang/ca_mail_forward.lng index 7b8feb1e8f1d7bdcd3b58b02dd897f7adaf2fc2b..2f9d26288f803cd20de14cf7d4f000f69580341a 100644 --- a/interface/web/mail/lib/lang/ca_mail_forward.lng +++ b/interface/web/mail/lib/lang/ca_mail_forward.lng @@ -9,7 +9,7 @@ $wb['source_txt'] = 'Source courriel'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Dupliquer l\'adresse courriel.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> diff --git a/interface/web/mail/lib/lang/ca_mail_transport.lng b/interface/web/mail/lib/lang/ca_mail_transport.lng index f8a5536560d4ae94e0cd63336f3a39f92ce4b276..7b12c7d0eb919596e0c0e05f40dec15c00e6b85a 100644 --- a/interface/web/mail/lib/lang/ca_mail_transport.lng +++ b/interface/web/mail/lib/lang/ca_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Trier par'; $wb['active_txt'] = 'Actif'; $wb['limit_mailrouting_txt'] = 'Le nombre maximal de routes pour votre compte a été atteint.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/ca_mail_whitelist.lng b/interface/web/mail/lib/lang/ca_mail_whitelist.lng index 0d621c95f3bc53a44b0ce1061f048c97573f370b..a85c7939c3950a11cc1fd5383ad858a09291c705 100644 --- a/interface/web/mail/lib/lang/ca_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/ca_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Actif'; $wb['source_error_notempty'] = 'L\'adresse est vide.'; $wb['type_txt'] = 'Type'; $wb['limit_mailfilter_txt'] = 'Le nombre maximal de filtres à mails pour votre compte a été atteint.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/ca_spamfilter_users.lng b/interface/web/mail/lib/lang/ca_spamfilter_users.lng index 9c7d5bbe7a645145c386eb32654ffc0f50bb72cc..a54e84e6080587f2f4a130ef1f530e3cdfbbe63f 100644 --- a/interface/web/mail/lib/lang/ca_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/ca_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/cz_mail_blacklist.lng b/interface/web/mail/lib/lang/cz_mail_blacklist.lng index 250d3a7ffa053acfe8f5be58c4c355f6a137b036..e95a23a3de8c1482ef65e7b30dc95c6bb4397b16 100644 --- a/interface/web/mail/lib/lang/cz_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/cz_mail_blacklist.lng @@ -6,3 +6,7 @@ $wb['active_txt'] = 'AktivnÃ'; $wb['source_error_notempty'] = 'Adresa je prázdná.'; $wb['type_txt'] = 'Typ'; $wb['limit_mailfilter_txt'] = 'Byl dosažen maximálnà poÄet e-mail filtrů pro Váš úÄet.'; +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/cz_mail_domain.lng b/interface/web/mail/lib/lang/cz_mail_domain.lng index 2d1adc034344a51a4f7462ec189a34b2b73e72f1..0c648a68f33aadf8b14163aa7c33ec95459d7f91 100644 --- a/interface/web/mail/lib/lang/cz_mail_domain.lng +++ b/interface/web/mail/lib/lang/cz_mail_domain.lng @@ -20,3 +20,6 @@ $wb['dkim_selector_error'] = 'Neplatný DKIM selektor. PoužÃvejte pouze malá $wb['policy_txt'] = 'Spamový filtr'; $wb['no_policy'] = '- nepovoleno -'; $wb['error_not_allowed_server_id'] = 'Zvolený server nenà povolen pro tento úÄet.'; +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng b/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng index 0ca32d2347521eeb0ec1c01c41f3a0a19fc8793e..a425cb74a6e86b3728fe779c2d4dd923ff8b64f3 100644 --- a/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng @@ -9,3 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Byl dosažen maximálnà poÄet košů úÄtů $wb['source_txt'] = 'Zdroj'; $wb['destination_error_isemail'] = 'CÃlová e-mailová adresa nenà platná.'; $wb['greylisting_txt'] = 'Povolit greylisting'; +$wb['send_as_txt'] = 'Odeslat jako'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/cz_mail_forward.lng b/interface/web/mail/lib/lang/cz_mail_forward.lng index f1deae40814462d93153dddc247f3dab09176521..1faa74c26c76256486743c0de979a436f422e620 100644 --- a/interface/web/mail/lib/lang/cz_mail_forward.lng +++ b/interface/web/mail/lib/lang/cz_mail_forward.lng @@ -9,6 +9,7 @@ $wb['source_txt'] = 'Zdrojový e-mail'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Zadejte prosÃm platnou e-mailovou adresu.'; +$wb['email_error_unique'] = 'Duplikovánà e-mailové adresy.'; $wb['send_as_txt'] = 'Odeslat jako'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; $wb['greylisting_txt'] = 'Povolit greylisting'; diff --git a/interface/web/mail/lib/lang/cz_mail_transport.lng b/interface/web/mail/lib/lang/cz_mail_transport.lng index 14c7dc2934dc5b746ba603930f3ae0a43228a654..d2dfec591f9725f767c41a8193da82a8f9fd35c7 100644 --- a/interface/web/mail/lib/lang/cz_mail_transport.lng +++ b/interface/web/mail/lib/lang/cz_mail_transport.lng @@ -8,3 +8,4 @@ $wb['sort_order_txt'] = 'TÅ™Ãdit podle'; $wb['active_txt'] = 'AktivnÃ'; $wb['limit_mailrouting_txt'] = 'Byl dosažen maximálnà poÄet e-mail smÄ›rovánà pro Váš úÄet.'; $wb['transport_txt'] = 'Transport'; +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/cz_mail_whitelist.lng b/interface/web/mail/lib/lang/cz_mail_whitelist.lng index c96f21909a39c8d4736c14d18b813a8aa404d47c..e775902fa869abd699315eac84fdc53b9da34a87 100644 --- a/interface/web/mail/lib/lang/cz_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/cz_mail_whitelist.lng @@ -6,3 +6,7 @@ $wb['active_txt'] = 'AktivnÃ'; $wb['source_error_notempty'] = 'Adresa je prázdná.'; $wb['type_txt'] = 'Typ'; $wb['limit_mailfilter_txt'] = 'Byl dosažen maximálnà poÄet e-mail filtrů pro Váš úÄet.'; +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/cz_spamfilter_users.lng b/interface/web/mail/lib/lang/cz_spamfilter_users.lng index f2fff323f4a71ebb187aa7f983b7593b7b12bed5..8c66a071440a39562bc05da565acbfe804741971 100644 --- a/interface/web/mail/lib/lang/cz_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/cz_spamfilter_users.lng @@ -10,3 +10,4 @@ $wb['fullname_error_notempty'] = 'Jméno nesmà být prázdné.'; $wb['10 - highest'] = '10 - nejvyÅ¡Å¡Ã'; $wb['5 - medium'] = '5 - stÅ™ednÃ'; $wb['1 - lowest'] = '1 - nejnižšÃ'; +$wb['inherit_policy'] = '- ZdÄ›dit nastavenà od domény -'; diff --git a/interface/web/mail/lib/lang/de_mail_alias.lng b/interface/web/mail/lib/lang/de_mail_alias.lng index 4cdcd03a6f9e607366f59e7b5d555c1d08cd9d34..7d8099fdcaaa8eb62479a398306e340e3cecc671 100644 --- a/interface/web/mail/lib/lang/de_mail_alias.lng +++ b/interface/web/mail/lib/lang/de_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['send_as_txt'] = 'Senden als'; $wb['send_as_exp'] = 'Ziel erlauben, den Alias als Absender zu benutzen'; $wb['greylisting_txt'] = 'Aktiviere Greylisting'; -?> diff --git a/interface/web/mail/lib/lang/de_mail_blacklist.lng b/interface/web/mail/lib/lang/de_mail_blacklist.lng index 4611dadd063c6eefcf51a2cada37f663975b2c05..7cb69f74bc32417a5211871ad27cdd4a01959494 100644 --- a/interface/web/mail/lib/lang/de_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/de_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Aktiv'; $wb['source_error_notempty'] = 'Adresse ist leer.'; $wb['type_txt'] = 'Typ'; $wb['limit_mailfilter_txt'] = 'Die maximale Anzahl an E-Mail Filter für Ihr Konto wurde erreicht.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/de_mail_domain.lng b/interface/web/mail/lib/lang/de_mail_domain.lng index 13aac42c79a437f7c60504f7859cac0f23615a0b..1a64a442313cc21dd6adeb0b895aba31729f33dc 100644 --- a/interface/web/mail/lib/lang/de_mail_domain.lng +++ b/interface/web/mail/lib/lang/de_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Ungültiger DKIM-Selector. Verwenden Sie nur max. 63 alphanumerische Zeichen (a-z oder 0-9)'; $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/de_mail_domain_catchall.lng b/interface/web/mail/lib/lang/de_mail_domain_catchall.lng index bef241e0ea6aabea07f902ff7529ac431de75c08..02fe5f100046661277b46c27d9b90a8128d9b8df 100644 --- a/interface/web/mail/lib/lang/de_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/de_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Die maximale Anzahl an Catchall Einträgen für $wb['source_txt'] = 'Quelle'; $wb['destination_error_isemail'] = 'Das Ziel ist keine gültige E-Mail Adresse.'; $wb['greylisting_txt'] = 'Aktiviere Greylisting'; -?> +$wb['send_as_txt'] = 'Senden als'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/de_mail_forward.lng b/interface/web/mail/lib/lang/de_mail_forward.lng index 4825ef781121cf0e4cfea82145863170b505df65..4435ce707c3dbfb6104dc56796762daca72e4e52 100644 --- a/interface/web/mail/lib/lang/de_mail_forward.lng +++ b/interface/web/mail/lib/lang/de_mail_forward.lng @@ -9,7 +9,7 @@ $wb['source_txt'] = 'Quell E-Mail Adresse'; $wb['destination_error_empty'] = 'Das Weiterleitungsziel darf nicht leer sein.'; $wb['destination_error_isemail'] = 'Das Weiterleitungsziel enthält mindestens eine ungültige E-Mail-Adresse.'; $wb['email_error_isemail'] = 'Bitte geben Sie eine gültige E-Mail Adresse an.'; +$wb['email_error_unique'] = 'Doppelte E-Mail Adresse.'; $wb['send_as_txt'] = 'Senden als'; $wb['send_as_exp'] = 'Ziel erlauben, die Adresse als Absender zu nutzen (Nur, falls das Ziel intern ist)'; $wb['greylisting_txt'] = 'Aktiviere greylisting'; -?> diff --git a/interface/web/mail/lib/lang/de_mail_transport.lng b/interface/web/mail/lib/lang/de_mail_transport.lng index 873036f947329e3df2ef874909f4dc0749954aef..724882866f968c6d4ac11da1576c41d781db4d90 100644 --- a/interface/web/mail/lib/lang/de_mail_transport.lng +++ b/interface/web/mail/lib/lang/de_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Sortiert nach'; $wb['active_txt'] = 'Aktiv'; $wb['limit_mailrouting_txt'] = 'Die maximale Anzahl an E-Mail Routen für Ihr Konto wurde erreicht.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/de_mail_whitelist.lng b/interface/web/mail/lib/lang/de_mail_whitelist.lng index 1506deba3f92bcd98b26d8a699e6171e6e039fa5..04719f2479a9d6671fee9c8534d50891ebbfde03 100644 --- a/interface/web/mail/lib/lang/de_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/de_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Aktiv'; $wb['source_error_notempty'] = 'E-Mail Adresse ist leer.'; $wb['type_txt'] = 'Typ'; $wb['limit_mailfilter_txt'] = 'Die maximale Anzahl an E-Mail Filtern für Ihr Konto wurde erreicht.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/de_spamfilter_users.lng b/interface/web/mail/lib/lang/de_spamfilter_users.lng index 9322c804664200e59122b34b0ab1f1e2d57bf722..d6b148cbe3153ab5343b5faaeffd2b925d0693ac 100644 --- a/interface/web/mail/lib/lang/de_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/de_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'Der Name darf nicht leer sein.'; $wb['10 - highest'] = '10 - höchste'; $wb['5 - medium'] = '5 - normal'; $wb['1 - lowest'] = '1 - niedrigste'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/dk_mail_alias.lng b/interface/web/mail/lib/lang/dk_mail_alias.lng index 19b41120012e0cc2f2e804eec5553ba89b6e820d..c0a66126f247342f72f4b7ac734fde0831266ce9 100644 --- a/interface/web/mail/lib/lang/dk_mail_alias.lng +++ b/interface/web/mail/lib/lang/dk_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> diff --git a/interface/web/mail/lib/lang/dk_mail_blacklist.lng b/interface/web/mail/lib/lang/dk_mail_blacklist.lng index 2830319b06fccc99f723e2059eb759a11ba71ab1..708b10fcb4515b46bf4116aedc2389730473e4f4 100644 --- a/interface/web/mail/lib/lang/dk_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/dk_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Aktiv'; $wb['source_error_notempty'] = 'Adresse er tom.'; $wb['type_txt'] = 'Type'; $wb['limit_mailfilter_txt'] = 'Max. antal af e-mail filtere for din konto er nÃ¥et.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/dk_mail_domain.lng b/interface/web/mail/lib/lang/dk_mail_domain.lng index f37b81d65e493fed5780267b48a21ded712ea19c..fcced58e1addb02e3fe37353f642a2f51cb2bff2 100644 --- a/interface/web/mail/lib/lang/dk_mail_domain.lng +++ b/interface/web/mail/lib/lang/dk_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng b/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng index 8c0be4977599589207235c7a56a99e9a326182f7..1025ca28984eba1aa4f75330e2849c54efc10dcd 100644 --- a/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Max. antal af e-mail catchall konti for din kon $wb['source_txt'] = 'Kilde'; $wb['destination_error_isemail'] = 'Destinationen er ikke en gyldig e-mail adresse.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/dk_mail_forward.lng b/interface/web/mail/lib/lang/dk_mail_forward.lng index ba47d8421d438cea4b5c29871bd1351c0bca2731..55939b9deb0bfd2b9addaea5fd0824e65877567d 100644 --- a/interface/web/mail/lib/lang/dk_mail_forward.lng +++ b/interface/web/mail/lib/lang/dk_mail_forward.lng @@ -9,7 +9,7 @@ $wb['source_txt'] = 'Kilde E-mail'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Dupliker E-mailadresse.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> diff --git a/interface/web/mail/lib/lang/dk_mail_transport.lng b/interface/web/mail/lib/lang/dk_mail_transport.lng index df2131cde4234714498ff56c105e6a17c5b66741..bb8a94f433d2259244de66755ad61e6634951af8 100644 --- a/interface/web/mail/lib/lang/dk_mail_transport.lng +++ b/interface/web/mail/lib/lang/dk_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Sort by'; $wb['active_txt'] = 'Aktiv'; $wb['limit_mailrouting_txt'] = 'Max. antal af ruter for din konto er nÃ¥et.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/dk_mail_whitelist.lng b/interface/web/mail/lib/lang/dk_mail_whitelist.lng index a05c234f943b27fd395e01cd8a8feae829bd196d..2efac1cfa413c9cc85dc3b8f1e648fa1abd99e67 100644 --- a/interface/web/mail/lib/lang/dk_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/dk_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Aktiv'; $wb['source_error_notempty'] = 'Adresse er tom.'; $wb['type_txt'] = 'Type'; $wb['limit_mailfilter_txt'] = 'Max. antal af email filtere for din konto er nÃ¥et.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/dk_spamfilter_users.lng b/interface/web/mail/lib/lang/dk_spamfilter_users.lng index 5b132bc77405cb7d983d9ff638076c44267fa9ca..b6d9a226d0e84031700acdb7e8522fa37975c510 100644 --- a/interface/web/mail/lib/lang/dk_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/dk_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'Navn mÃ¥ ikke være tomt.'; $wb['10 - highest'] = '10 - højeste'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - laveste'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/el_mail_alias.lng b/interface/web/mail/lib/lang/el_mail_alias.lng index 5663822ce05b81428fe8669a5d9fec7aa1172c0c..bcbb3220c75c41609c02b68ba10fc9705c7def6e 100644 --- a/interface/web/mail/lib/lang/el_mail_alias.lng +++ b/interface/web/mail/lib/lang/el_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -?> diff --git a/interface/web/mail/lib/lang/el_mail_blacklist.lng b/interface/web/mail/lib/lang/el_mail_blacklist.lng index 479a3deb0168c44221f7a64a8872e44a780a9659..d7b27ff7d7b93d8fbd9a44fbbec01719d78df3e0 100644 --- a/interface/web/mail/lib/lang/el_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/el_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'ΕνεÏγή'; $wb['source_error_notempty'] = 'Η διεÏθυνση είναι κενή.'; $wb['type_txt'] = 'ΤÏπος'; $wb['limit_mailfilter_txt'] = 'Έχετε φτάσει το μÎγιστο πλήθος των φίλτÏων email για τον λογαÏιασμό σας.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/el_mail_domain.lng b/interface/web/mail/lib/lang/el_mail_domain.lng index 3973746dfd5d47000a68602250c7e8d6685751b2..3909576a3c8d36cbdb1cc5b2e9d40a347eb16091 100644 --- a/interface/web/mail/lib/lang/el_mail_domain.lng +++ b/interface/web/mail/lib/lang/el_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/el_mail_domain_catchall.lng b/interface/web/mail/lib/lang/el_mail_domain_catchall.lng index b04b43cfcce3e4f179a14d74e02ac30c82dc5d63..9d097c2d42b854ee96a4f8fd6d3d83f315f20824 100644 --- a/interface/web/mail/lib/lang/el_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/el_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Το μÎγιστο πλήθος των email c $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/el_mail_forward.lng b/interface/web/mail/lib/lang/el_mail_forward.lng index 8893b2fa0ffb886cefbceea5ad37f2d7a9ef45d0..2519aa39e8f7b9fa02e437c8bd6ce0a24c28432b 100644 --- a/interface/web/mail/lib/lang/el_mail_forward.lng +++ b/interface/web/mail/lib/lang/el_mail_forward.lng @@ -10,6 +10,6 @@ $wb['greylisting_txt'] = 'Enable greylisting'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Διπλή διεÏθυνση Email.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -?> diff --git a/interface/web/mail/lib/lang/el_mail_transport.lng b/interface/web/mail/lib/lang/el_mail_transport.lng index 1b1a5c7ab4a0229b7824bf031df672fd926d7a6e..37eef348b626a7aad46a3f446537e98979d051d8 100644 --- a/interface/web/mail/lib/lang/el_mail_transport.lng +++ b/interface/web/mail/lib/lang/el_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Ταξινόμηση κατά'; $wb['active_txt'] = 'ΕνεÏγό'; $wb['limit_mailrouting_txt'] = 'Το μÎγιστο πλήθος των δÏομολογήσεων email για τον λογαÏιασμό σας, εξαντλήθηκε.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/el_mail_whitelist.lng b/interface/web/mail/lib/lang/el_mail_whitelist.lng index 6c477f60c2b4f0bd2b0bed463245abb0b4c6336b..601a53434fc55862caaffd105d725df808f88950 100644 --- a/interface/web/mail/lib/lang/el_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/el_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'ΕνεÏγή'; $wb['source_error_notempty'] = 'Η διεÏθυνση είναι κενή'; $wb['type_txt'] = 'ΤÏπος'; $wb['limit_mailfilter_txt'] = 'Έχετε φτάσει το μÎγιστο πλήθος των φίλτÏων email για τον λογαÏιασμό σας.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/el_spamfilter_users.lng b/interface/web/mail/lib/lang/el_spamfilter_users.lng index b6da2d1e15dc3ea54c0ce3c3d206d80fbd4065c3..fc61aa818dc0ef1d5a0f8ddf64ff703ffaa2b279 100644 --- a/interface/web/mail/lib/lang/el_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/el_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/en_mail_alias.lng b/interface/web/mail/lib/lang/en_mail_alias.lng index 439ab74a096cdf2c83fc676db0f8fee70ff9cbea..84770e4c7ec9547315f78720ca7e367996d79258 100644 --- a/interface/web/mail/lib/lang/en_mail_alias.lng +++ b/interface/web/mail/lib/lang/en_mail_alias.lng @@ -3,9 +3,9 @@ $wb['email_txt'] = 'Email'; $wb['destination_txt'] = 'Destination'; $wb['active_txt'] = 'Active'; $wb['email_error_isemail'] = 'Email address is invalid.'; -$wb['email_error_unique'] = 'Duplicate Emailaddress.'; +$wb['email_error_unique'] = 'Duplicate Email Address.'; $wb['no_domain_perm'] = 'You have no permission for this domain.'; -$wb['destination_error_isemail'] = 'Destination Emailaddress is invalid.'; +$wb['destination_error_isemail'] = 'Destination Email Address is invalid.'; $wb['limit_mailalias_txt'] = 'The max. number of email aliases for your account is reached.'; $wb['duplicate_mailbox_txt'] = 'There is already a mailbox with this email address.'; $wb['domain_txt'] = 'Domain'; @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> diff --git a/interface/web/mail/lib/lang/en_mail_blacklist.lng b/interface/web/mail/lib/lang/en_mail_blacklist.lng index 8bae57d6b0d50a40e668d353a9a09afc7117d0f2..81a1b6d279d0d2c11c7fc35465394e97ff229d0b 100644 --- a/interface/web/mail/lib/lang/en_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/en_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Active'; $wb['source_error_notempty'] = 'Address is empty.'; $wb['type_txt'] = 'Type'; $wb['limit_mailfilter_txt'] = 'The max. number of email filters for your account is reached.'; -?> \ No newline at end of file +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/en_mail_domain.lng b/interface/web/mail/lib/lang/en_mail_domain.lng index 0190c0ab0696df773f136728309b5b7cd808e0bb..39e22f75b6219addb8f7ceede6d49928934e595c 100644 --- a/interface/web/mail/lib/lang/en_mail_domain.lng +++ b/interface/web/mail/lib/lang/en_mail_domain.lng @@ -20,4 +20,6 @@ $wb['no_policy'] = '- not enabled -'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/en_mail_domain_catchall.lng b/interface/web/mail/lib/lang/en_mail_domain_catchall.lng index ecbb8d9444bf744f0e15abeb532c3dcf273972c4..6af61df4b061475803a3f6280f1b55686cc49e23 100644 --- a/interface/web/mail/lib/lang/en_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/en_mail_domain_catchall.lng @@ -10,4 +10,5 @@ $wb['domain_txt'] = 'Domain'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/en_mail_forward.lng b/interface/web/mail/lib/lang/en_mail_forward.lng index c38e2bf4ffe7c38e3ea4cdce2acf7444e1ae3b8b..65b2b753d9731839a417ff8efa976b9b3c46389c 100644 --- a/interface/web/mail/lib/lang/en_mail_forward.lng +++ b/interface/web/mail/lib/lang/en_mail_forward.lng @@ -9,7 +9,7 @@ $wb['source_txt'] = 'Source Email'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Duplicate Email Address.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> diff --git a/interface/web/mail/lib/lang/en_mail_transport.lng b/interface/web/mail/lib/lang/en_mail_transport.lng index a0b3dd808b6d0cec752227adaebc6820e99f44b9..16c33c02011d4bec352ffdde12a70234d51aeab7 100644 --- a/interface/web/mail/lib/lang/en_mail_transport.lng +++ b/interface/web/mail/lib/lang/en_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Sort by'; $wb['active_txt'] = 'Active'; $wb['limit_mailrouting_txt'] = 'The max. number of routes for your account is reached.'; $wb['transport_txt'] = 'Transport'; -?> \ No newline at end of file +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/en_mail_whitelist.lng b/interface/web/mail/lib/lang/en_mail_whitelist.lng index f7e4ab881f8343a93a6bfcd9946256ee8a756a26..351a0574d3cb1ed7238569ad4905d3090db388a5 100644 --- a/interface/web/mail/lib/lang/en_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/en_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Active'; $wb['source_error_notempty'] = 'Address is empty.'; $wb['type_txt'] = 'Type'; $wb['limit_mailfilter_txt'] = 'The max. number of email filters for your account is reached.'; -?> \ No newline at end of file +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/en_spamfilter_users.lng b/interface/web/mail/lib/lang/en_spamfilter_users.lng index e43b315df6b655a4cc738a77a4a1a328521915f6..05d0ca9bd627de80cdd373cfe5fe80af517ff484 100644 --- a/interface/web/mail/lib/lang/en_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/en_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> \ No newline at end of file +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/es_mail_alias.lng b/interface/web/mail/lib/lang/es_mail_alias.lng index 18d1cb734728e8a2a9cca4cc828aa83beebd77be..7c0d7c7ccf446cef0b395035584e8b0937afd586 100644 --- a/interface/web/mail/lib/lang/es_mail_alias.lng +++ b/interface/web/mail/lib/lang/es_mail_alias.lng @@ -14,4 +14,3 @@ $wb['no_domain_perm'] = 'No tiene permisos para usar este dominio.'; $wb['send_as_exp'] = 'Permite al destinatario enviar correos usando este alias como origen'; $wb['send_as_txt'] = 'Enviar como'; $wb['source_txt'] = 'Alias'; -?> diff --git a/interface/web/mail/lib/lang/es_mail_blacklist.lng b/interface/web/mail/lib/lang/es_mail_blacklist.lng index 81ae71c57579910dce7e27c264fa2745a2b1ef07..0956e6f5e40416151ddaca2d936b2b42ace27ccb 100644 --- a/interface/web/mail/lib/lang/es_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/es_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['server_id_txt'] = 'Servidor'; $wb['source_error_notempty'] = 'La dirección está vacÃa.'; $wb['source_txt'] = 'Dirección en la lista negra'; $wb['type_txt'] = 'Tipo'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/es_mail_domain.lng b/interface/web/mail/lib/lang/es_mail_domain.lng index 36c5ae576308d73cc2ddbd0b24a0b991d0926385..bd23b94191934ba8d40d236b56e11b37894ca30b 100644 --- a/interface/web/mail/lib/lang/es_mail_domain.lng +++ b/interface/web/mail/lib/lang/es_mail_domain.lng @@ -20,4 +20,6 @@ $wb['no_policy'] = '- no habilitado -'; $wb['policy_txt'] = 'Filtro de spam'; $wb['server_id_txt'] = 'Servidor'; $wb['type_txt'] = 'Tipo'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/es_mail_domain_catchall.lng b/interface/web/mail/lib/lang/es_mail_domain_catchall.lng index 68e03c8c3712d4e5730303d782022fc2fd31bcc6..8ff7c6530e83f8ee6202379bd22488e7b91c7bc6 100644 --- a/interface/web/mail/lib/lang/es_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/es_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Ha alcanzado el número máx. de correo \\"reco $wb['no_domain_perm'] = 'No tiene permisos para usar este dominio.'; $wb['source_txt'] = 'Origen'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Enviar como'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/es_mail_forward.lng b/interface/web/mail/lib/lang/es_mail_forward.lng index 7ea99ea61909f1b6388fbe7a0c58454f15f73a73..a295943f3c15719d3cd7fb87a987a305fdd5916f 100644 --- a/interface/web/mail/lib/lang/es_mail_forward.lng +++ b/interface/web/mail/lib/lang/es_mail_forward.lng @@ -6,10 +6,10 @@ $wb['duplicate_mailbox_txt'] = 'Ya existe un buzón con esta cuenta de correo.'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Por favor, introduzca una dirección de correo válida.'; +$wb['email_error_unique'] = 'Dirección de correo duplicada.'; $wb['email_txt'] = 'Correo'; $wb['greylisting_txt'] = 'Habilitar Lista Gris'; $wb['limit_mailforward_txt'] = 'Ha alcanzado el número máx. de reenvÃos de correos permitidos para su cuenta.'; $wb['send_as_exp'] = 'Permitir al destino enviar correo usando esta dirección como origen (si el destino es interno)'; $wb['send_as_txt'] = 'Enviar como'; $wb['source_txt'] = 'Origen del correo'; -?> diff --git a/interface/web/mail/lib/lang/es_mail_transport.lng b/interface/web/mail/lib/lang/es_mail_transport.lng index b35ee39188c7bfd1722f854f3baa4fba443dc20b..e0b3b4ad81503667e8e003b1a0d58cb15977f541 100644 --- a/interface/web/mail/lib/lang/es_mail_transport.lng +++ b/interface/web/mail/lib/lang/es_mail_transport.lng @@ -8,4 +8,4 @@ $wb['server_id_txt'] = 'Servidor'; $wb['sort_order_txt'] = 'Ordenar por'; $wb['transport_txt'] = 'Transporte'; $wb['type_txt'] = 'Tipo'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/es_mail_whitelist.lng b/interface/web/mail/lib/lang/es_mail_whitelist.lng index e92979f13ce39c9180aa4bd0a9bbf4ff058cc3df..af5362d2e06ef2f4b45a5526297a0312f0d09f22 100644 --- a/interface/web/mail/lib/lang/es_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/es_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Habilitado'; $wb['source_error_notempty'] = 'La dirección está vacÃa.'; $wb['type_txt'] = 'Tipo'; $wb['limit_mailfilter_txt'] = 'Ha alcanzado en su cuenta el número máx. de filtros de correo.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/es_spamfilter_users.lng b/interface/web/mail/lib/lang/es_spamfilter_users.lng index c5a5a0f9480cb677df0f003378c94d6594ce933d..575c14a9f4cc5df4d0aa0e8c547bc68303ded332 100644 --- a/interface/web/mail/lib/lang/es_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/es_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['local_txt'] = 'Local'; $wb['policy_id_txt'] = 'Directiva'; $wb['priority_txt'] = 'Prioridad'; $wb['server_id_txt'] = 'Servidor'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/fi_mail_alias.lng b/interface/web/mail/lib/lang/fi_mail_alias.lng index 918db07761b4d5fa93992f74245d62a79716f717..20179dfdb6565716d3a9f6567254d7d44a773974 100644 --- a/interface/web/mail/lib/lang/fi_mail_alias.lng +++ b/interface/web/mail/lib/lang/fi_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -?> diff --git a/interface/web/mail/lib/lang/fi_mail_blacklist.lng b/interface/web/mail/lib/lang/fi_mail_blacklist.lng index 66cb93004e643e787eb070d5a9fc237ace48f8a1..f24d79d80f9b442051dd837137aab4fdaa1339cb 100644 --- a/interface/web/mail/lib/lang/fi_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/fi_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Käytössä'; $wb['source_error_notempty'] = 'Estetty osoite on tyhjä'; $wb['type_txt'] = 'Tyyppi'; $wb['limit_mailfilter_txt'] = 'Käyttäjätunnuksella on jo sallittu määrä suodattimia.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/fi_mail_domain.lng b/interface/web/mail/lib/lang/fi_mail_domain.lng index 088c768091659f8297debdaeb596e9b4e21d0b18..d77fe325004fddf591bef88d176a6b865995bfe2 100644 --- a/interface/web/mail/lib/lang/fi_mail_domain.lng +++ b/interface/web/mail/lib/lang/fi_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng b/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng index 085a116c2c76ae262b97e7220c6e9a8813965eae..743da590ae9f74176b27f09684c04252efdf91ad 100644 --- a/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Käyttäjätunnuksella on jo sallittu määrä $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/fi_mail_forward.lng b/interface/web/mail/lib/lang/fi_mail_forward.lng index 80d34b500437108ba8d7300d27dd2af6e561fb5e..72b36cd082988b2c416a5f825fb245f7c8c178d2 100644 --- a/interface/web/mail/lib/lang/fi_mail_forward.lng +++ b/interface/web/mail/lib/lang/fi_mail_forward.lng @@ -10,6 +10,6 @@ $wb['greylisting_txt'] = 'Enable greylisting'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Tämä aliasosoite on jo olemassa'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -?> diff --git a/interface/web/mail/lib/lang/fi_mail_transport.lng b/interface/web/mail/lib/lang/fi_mail_transport.lng index 01be49e44ac786965d16cb77cf12a46d0e7a67b4..24675e457f6d35eb5648b07ae6aa37bdedd91f30 100644 --- a/interface/web/mail/lib/lang/fi_mail_transport.lng +++ b/interface/web/mail/lib/lang/fi_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Järjestä..'; $wb['active_txt'] = 'Käytössä'; $wb['limit_mailrouting_txt'] = 'Käyttäjätunnuksella on jo sallittu määrä sähköpostireitityksiä.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/fi_mail_whitelist.lng b/interface/web/mail/lib/lang/fi_mail_whitelist.lng index abd8e85f2b9cb8ca60adac31dc76acce40396ed2..c5d317a42cb1ade3e884ec849511873f710ddd64 100644 --- a/interface/web/mail/lib/lang/fi_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/fi_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Käytössä'; $wb['source_error_notempty'] = 'Osoite on tyhjä'; $wb['type_txt'] = 'Tyyppi'; $wb['limit_mailfilter_txt'] = 'Käyttäjätunnuksella on jo sallittu määrä suodattimia.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/fi_spamfilter_users.lng b/interface/web/mail/lib/lang/fi_spamfilter_users.lng index c4290efbf25f6dce6c23523c2683bcedfec571f5..5c9570d6fb5e7bfb8aa900f23570e9002f23dcda 100644 --- a/interface/web/mail/lib/lang/fi_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/fi_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/fr_mail_alias.lng b/interface/web/mail/lib/lang/fr_mail_alias.lng index 2baa476c657202c4a7471505698bd04d48e61a8c..b3868afc2c9694f3a38432d22fca121b53ce8804 100644 --- a/interface/web/mail/lib/lang/fr_mail_alias.lng +++ b/interface/web/mail/lib/lang/fr_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> diff --git a/interface/web/mail/lib/lang/fr_mail_blacklist.lng b/interface/web/mail/lib/lang/fr_mail_blacklist.lng index 161acd632ddea126dc1e2f472961fb733b2358fd..649d94c1dc24db4b54718865eea4ae48ce717a9d 100644 --- a/interface/web/mail/lib/lang/fr_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/fr_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Actif'; $wb['source_error_notempty'] = 'L’adresse est vide.'; $wb['type_txt'] = 'Type'; $wb['limit_mailfilter_txt'] = 'Le nombre maximal de filtres d’e-mail pour votre compte a été atteint.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/fr_mail_domain.lng b/interface/web/mail/lib/lang/fr_mail_domain.lng index eebbdc02b164dbe4b8a24cb13ed10107a17469bd..56efb88aae308647e2e0c041a0e089301dc05d45 100644 --- a/interface/web/mail/lib/lang/fr_mail_domain.lng +++ b/interface/web/mail/lib/lang/fr_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng b/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng index 199cd47224810f26214d75b82615ddb4b8ec5bfc..9ba28dcfb65bb402f74dcc3e4252a04f386efc67 100644 --- a/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Le nombre maximal de comptes collecteurs pour v $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid e-mail address.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/fr_mail_forward.lng b/interface/web/mail/lib/lang/fr_mail_forward.lng index fd6d13c6bb0d84e4f1917cbc0f368b24d2ae2f5b..87caec79e03a6d660225e73d289d9ee9837436a3 100644 --- a/interface/web/mail/lib/lang/fr_mail_forward.lng +++ b/interface/web/mail/lib/lang/fr_mail_forward.lng @@ -9,7 +9,7 @@ $wb['source_txt'] = 'Source Email'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Dupliquer l’adresse e-mail.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> diff --git a/interface/web/mail/lib/lang/fr_mail_transport.lng b/interface/web/mail/lib/lang/fr_mail_transport.lng index f8a5536560d4ae94e0cd63336f3a39f92ce4b276..7b12c7d0eb919596e0c0e05f40dec15c00e6b85a 100644 --- a/interface/web/mail/lib/lang/fr_mail_transport.lng +++ b/interface/web/mail/lib/lang/fr_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Trier par'; $wb['active_txt'] = 'Actif'; $wb['limit_mailrouting_txt'] = 'Le nombre maximal de routes pour votre compte a été atteint.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/fr_mail_whitelist.lng b/interface/web/mail/lib/lang/fr_mail_whitelist.lng index f11d0b76a747cc01150ab503003bc77e28911170..bc768e77a1eddfafd9888c57e34374943b81fe34 100644 --- a/interface/web/mail/lib/lang/fr_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/fr_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Actif'; $wb['source_error_notempty'] = 'L’adresse est vide.'; $wb['type_txt'] = 'Type'; $wb['limit_mailfilter_txt'] = 'Le nombre maximal de filtres à mails pour votre compte a été atteint.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/fr_spamfilter_users.lng b/interface/web/mail/lib/lang/fr_spamfilter_users.lng index e8936b01833f43adb8057bef19b7d566c153b28d..b87fe87ccb6ae51a8f3a79b63b40129754a3db7c 100644 --- a/interface/web/mail/lib/lang/fr_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/fr_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/hr_mail_alias.lng b/interface/web/mail/lib/lang/hr_mail_alias.lng index 180bcbeacd9bddbe09c14038b09742347c179e84..152172a6b51467eff2a9447439b90d165991c8d1 100644 --- a/interface/web/mail/lib/lang/hr_mail_alias.lng +++ b/interface/web/mail/lib/lang/hr_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -?> diff --git a/interface/web/mail/lib/lang/hr_mail_blacklist.lng b/interface/web/mail/lib/lang/hr_mail_blacklist.lng index dbce8de10d73e7297f3c81c697f1eb5f23f2c3af..3a542e2a82879e1edd547fb8ce375829a0aabf8d 100644 --- a/interface/web/mail/lib/lang/hr_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/hr_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Aktivno'; $wb['source_error_notempty'] = 'Adresa je prazna'; $wb['type_txt'] = 'Vrsta'; $wb['limit_mailfilter_txt'] = 'The max. number of email filters for your account is reached.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/hr_mail_domain.lng b/interface/web/mail/lib/lang/hr_mail_domain.lng index eb91862b311b0c1a7d82c40758990029d86efee0..2f53c694c80f79bef6ac8bdd811cfa8068ee4530 100644 --- a/interface/web/mail/lib/lang/hr_mail_domain.lng +++ b/interface/web/mail/lib/lang/hr_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng b/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng index 1c8da72ab3ee0107c9b09b518cfc5e6c677a5ba7..ef6dc1d0cff4d103374434ff4b9538762f9725cf 100644 --- a/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'IskoriÅ¡ten ja maksimalan broj email catchall r $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/hr_mail_forward.lng b/interface/web/mail/lib/lang/hr_mail_forward.lng index 10abd5fe9286fceb3d1f40b3707c369bafcc39f3..86430d19f7f37995bcba8159adf1bf8c989de22a 100644 --- a/interface/web/mail/lib/lang/hr_mail_forward.lng +++ b/interface/web/mail/lib/lang/hr_mail_forward.lng @@ -10,6 +10,6 @@ $wb['greylisting_txt'] = 'Enable greylisting'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Duplicirane email adrese.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -?> diff --git a/interface/web/mail/lib/lang/hr_mail_transport.lng b/interface/web/mail/lib/lang/hr_mail_transport.lng index c27687f9562306a1b507aefbb3d3093b16bb5084..923ac09d52670ab5190967c62ef3b8d29f82ff18 100644 --- a/interface/web/mail/lib/lang/hr_mail_transport.lng +++ b/interface/web/mail/lib/lang/hr_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Sortiraj'; $wb['active_txt'] = 'Aktivno'; $wb['limit_mailrouting_txt'] = 'IskoriÅ¡ten je maksimalan broj ruta.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/hr_mail_whitelist.lng b/interface/web/mail/lib/lang/hr_mail_whitelist.lng index a43e8eef466b41cd55c1868048820f12215d9431..4d4643e6da320a584985cf67fee8442566e6dc0e 100644 --- a/interface/web/mail/lib/lang/hr_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/hr_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Aktivno'; $wb['source_error_notempty'] = 'Adresa je prazna'; $wb['type_txt'] = 'Vrsta'; $wb['limit_mailfilter_txt'] = 'The max. number of email filters for your account is reached.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/hr_spamfilter_users.lng b/interface/web/mail/lib/lang/hr_spamfilter_users.lng index 9969ef421d93ae8f4b78ce8b87074b7d5a76b7f4..9e78310d71d13eb020ebd7855635a255c41c54e2 100644 --- a/interface/web/mail/lib/lang/hr_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/hr_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/hu_mail_alias.lng b/interface/web/mail/lib/lang/hu_mail_alias.lng index 7fc9e7a1d3d569e3092116059b6155386ad4379c..f2b5fab45a6b2fb78a7d11eb4bafac458cd8d7f4 100644 --- a/interface/web/mail/lib/lang/hu_mail_alias.lng +++ b/interface/web/mail/lib/lang/hu_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -?> diff --git a/interface/web/mail/lib/lang/hu_mail_blacklist.lng b/interface/web/mail/lib/lang/hu_mail_blacklist.lng index 1d2f0e014ecac7e1d1c3f940ab6b84c0e4b45721..8b97aa868d99221c7ec9da9890ddd19451290962 100644 --- a/interface/web/mail/lib/lang/hu_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/hu_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'AktÃv'; $wb['source_error_notempty'] = 'CÃm üres.'; $wb['type_txt'] = 'TÃpus'; $wb['limit_mailfilter_txt'] = 'Nincs több szűrÅ‘ lehetÅ‘ség.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/hu_mail_domain.lng b/interface/web/mail/lib/lang/hu_mail_domain.lng index 431beb8a013fc3c3bfa30cb75bd43171a37be20a..96a5dc03a51233e168098b6e9d655e98f57bd0c9 100644 --- a/interface/web/mail/lib/lang/hu_mail_domain.lng +++ b/interface/web/mail/lib/lang/hu_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng b/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng index e26795953dc06ac0ae227577a9bdbaaefc06f72b..9e164ea19c3c17a2e6909c48d09010cc24e9d626 100644 --- a/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Nincs több catchall lehetÅ‘ség.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/hu_mail_forward.lng b/interface/web/mail/lib/lang/hu_mail_forward.lng index c58ae29d317bd3de03e716cbfe77f76cb068eaaa..936b9781ef49026f1bf16eba784a167996d24c04 100644 --- a/interface/web/mail/lib/lang/hu_mail_forward.lng +++ b/interface/web/mail/lib/lang/hu_mail_forward.lng @@ -10,6 +10,6 @@ $wb['greylisting_txt'] = 'Enable greylisting'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Már létezÅ‘ email cÃm'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -?> diff --git a/interface/web/mail/lib/lang/hu_mail_transport.lng b/interface/web/mail/lib/lang/hu_mail_transport.lng index 7ade063c2b17a4de1cc4c7af9cba97245aacfda2..08e8300e2ed3c5d375d9864c7c080f4299c11755 100644 --- a/interface/web/mail/lib/lang/hu_mail_transport.lng +++ b/interface/web/mail/lib/lang/hu_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Rendezés'; $wb['active_txt'] = 'AktÃv'; $wb['limit_mailrouting_txt'] = 'Nincs több Email irányÃtás lehetÅ‘ség.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/hu_mail_whitelist.lng b/interface/web/mail/lib/lang/hu_mail_whitelist.lng index 71c3cf39bbc118667588f71ab6a18b66794e96df..9db70ac0ebf5af654d682ed9d25325c4b867ef21 100644 --- a/interface/web/mail/lib/lang/hu_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/hu_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'AktÃv'; $wb['source_error_notempty'] = 'CÃm mezÅ‘ üres.'; $wb['type_txt'] = 'TÃpus'; $wb['limit_mailfilter_txt'] = 'Nincs több szűrÅ‘ lehetÅ‘ség.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/hu_spamfilter_users.lng b/interface/web/mail/lib/lang/hu_spamfilter_users.lng index 573d696182d6451da51b202602229b542aa6cb7a..a5097ddbfde5272c06aa6110de2b12809e4b4fd6 100644 --- a/interface/web/mail/lib/lang/hu_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/hu_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/id_mail_alias.lng b/interface/web/mail/lib/lang/id_mail_alias.lng index e0efdb1504c511bf4d298047f29579c0f049cf7a..aae76432fd7e4afce677baaccc642cdefdb03f15 100644 --- a/interface/web/mail/lib/lang/id_mail_alias.lng +++ b/interface/web/mail/lib/lang/id_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -?> diff --git a/interface/web/mail/lib/lang/id_mail_blacklist.lng b/interface/web/mail/lib/lang/id_mail_blacklist.lng index 4454a33c2409a614199b711e97bc72a7996a1a45..4416ce17e459acc01858311b67cc60dc158d74f6 100644 --- a/interface/web/mail/lib/lang/id_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/id_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Aktif'; $wb['source_error_notempty'] = 'Alamat kosong.'; $wb['type_txt'] = 'Tipe'; $wb['limit_mailfilter_txt'] = 'Jumlah maks penyaringan email untuk akun Anda telah tercapai.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/id_mail_domain.lng b/interface/web/mail/lib/lang/id_mail_domain.lng index c13968dde83b3dc02286fcd9a2f0f43cb8bbe2af..2979773e8c9183af092abba17b866cb5390bc0e4 100644 --- a/interface/web/mail/lib/lang/id_mail_domain.lng +++ b/interface/web/mail/lib/lang/id_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/id_mail_domain_catchall.lng b/interface/web/mail/lib/lang/id_mail_domain_catchall.lng index c380957fdc210a831adacd6059a232378ee4fe79..69f2837385572ed4f6e2a3c440da088c42e29622 100644 --- a/interface/web/mail/lib/lang/id_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/id_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Jumlah maks akun catchall email untuk akun Anda $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/id_mail_forward.lng b/interface/web/mail/lib/lang/id_mail_forward.lng index 5f0c788878e3cb5223205438c0cfaa1b47997843..792070d92076bb3a223f7208c098db2783c5dbf3 100644 --- a/interface/web/mail/lib/lang/id_mail_forward.lng +++ b/interface/web/mail/lib/lang/id_mail_forward.lng @@ -10,6 +10,6 @@ $wb['greylisting_txt'] = 'Enable greylisting'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Alamat Email Ganda.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -?> diff --git a/interface/web/mail/lib/lang/id_mail_transport.lng b/interface/web/mail/lib/lang/id_mail_transport.lng index 8ad3dacf2ab4bb6932dfef044cc1d9478c184e2f..818f6f72803a6ee6ce84f9f0eaa431c40d386bf8 100644 --- a/interface/web/mail/lib/lang/id_mail_transport.lng +++ b/interface/web/mail/lib/lang/id_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Urutkan berdasarkan'; $wb['active_txt'] = 'Aktif'; $wb['limit_mailrouting_txt'] = 'Jumlah maks rute untuk akun Anda telah tercapai.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/id_mail_whitelist.lng b/interface/web/mail/lib/lang/id_mail_whitelist.lng index 52dd134271f37eda1f4322b39936e587266994a5..7eff21f47c7b5e7ef05434b37dfb5cb18863fa79 100644 --- a/interface/web/mail/lib/lang/id_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/id_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Aktif'; $wb['source_error_notempty'] = 'Alamat kosong.'; $wb['type_txt'] = 'Tipe'; $wb['limit_mailfilter_txt'] = 'Jumlah maks filter email untuk akun Anda telah tercapai.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/id_spamfilter_users.lng b/interface/web/mail/lib/lang/id_spamfilter_users.lng index f4549c5c46bba8e4afcd30497f0f6b886b253548..4777d33581258ff23d77245ceafde81cb6a0cdab 100644 --- a/interface/web/mail/lib/lang/id_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/id_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/it_mail_alias.lng b/interface/web/mail/lib/lang/it_mail_alias.lng index fea4fe0c12ba3cb971c8a4c6c9afb6ee5630d1d6..eab82caf51cb4afb8759015fb6cd2d2636d54bb6 100644 --- a/interface/web/mail/lib/lang/it_mail_alias.lng +++ b/interface/web/mail/lib/lang/it_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> diff --git a/interface/web/mail/lib/lang/it_mail_blacklist.lng b/interface/web/mail/lib/lang/it_mail_blacklist.lng index 169015d65844c7c1948cc694fff7081c9c5d5a1f..0b4f16a7c4bd447fe87cb7e891d5c2b11b3d541c 100644 --- a/interface/web/mail/lib/lang/it_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/it_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Attivo'; $wb['source_error_notempty'] = 'Address vuoto.'; $wb['type_txt'] = 'Type'; $wb['limit_mailfilter_txt'] = 'The max. number of email filters raggiunto per il tuo account.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/it_mail_domain.lng b/interface/web/mail/lib/lang/it_mail_domain.lng index 46089adb90d2538e76c83aa6b46dc1bd60324252..88e2c146df0a0c5e15cd28432635c65edc9b20b7 100644 --- a/interface/web/mail/lib/lang/it_mail_domain.lng +++ b/interface/web/mail/lib/lang/it_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/it_mail_domain_catchall.lng b/interface/web/mail/lib/lang/it_mail_domain_catchall.lng index 3345bed9c7e646b0cdab80cee00daa478c60a9cf..7403fcd663c0a042eb30938606a128e3de9ad238 100644 --- a/interface/web/mail/lib/lang/it_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/it_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'The max. number of email catchall accounts ragg $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/it_mail_forward.lng b/interface/web/mail/lib/lang/it_mail_forward.lng index 3b5210fba1e19d02aa9ae23fcc771937f1910e1e..6c4690c750bb4bbf0864ca3a7e89b2d529a7afdb 100644 --- a/interface/web/mail/lib/lang/it_mail_forward.lng +++ b/interface/web/mail/lib/lang/it_mail_forward.lng @@ -9,7 +9,7 @@ $wb['source_txt'] = 'Source Email'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Indirizzo email duplicato.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> diff --git a/interface/web/mail/lib/lang/it_mail_transport.lng b/interface/web/mail/lib/lang/it_mail_transport.lng index 9273621ff19fbd2fe748e2264dc91b1ec0c6b2d5..fbd1a58087e6d399d257e94b59df52b5dff1d6de 100644 --- a/interface/web/mail/lib/lang/it_mail_transport.lng +++ b/interface/web/mail/lib/lang/it_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Ordina per'; $wb['active_txt'] = 'Attivo'; $wb['limit_mailrouting_txt'] = 'The max. number of routes raggiunto per il tuo account.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/it_mail_whitelist.lng b/interface/web/mail/lib/lang/it_mail_whitelist.lng index c63f5759f4296fa82b038d7435f4e5a1bf47fb05..fbc9980fed0991ef1c1919811ed3b336fa0fa5dc 100644 --- a/interface/web/mail/lib/lang/it_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/it_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Attivo'; $wb['source_error_notempty'] = 'Address vuoto.'; $wb['type_txt'] = 'Type'; $wb['limit_mailfilter_txt'] = 'The max. number of email filters raggiunto per il tuo account.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/it_spamfilter_users.lng b/interface/web/mail/lib/lang/it_spamfilter_users.lng index cebb20324e774bc92664e93435b23551fee213b1..2f49b05a41afee3b8b92cd7e76918fa3684312fc 100644 --- a/interface/web/mail/lib/lang/it_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/it_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be vuoto.'; $wb['10 - highest'] = '10 - elevata'; $wb['5 - medium'] = '5 - media'; $wb['1 - lowest'] = '1 - minima'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/ja_mail_alias.lng b/interface/web/mail/lib/lang/ja_mail_alias.lng index c03bb825dad7a258f13c3f57c5e028e358e7d552..317a28337fa7fd0e16ce2539e3ef04238403f8e5 100644 --- a/interface/web/mail/lib/lang/ja_mail_alias.lng +++ b/interface/web/mail/lib/lang/ja_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -?> diff --git a/interface/web/mail/lib/lang/ja_mail_blacklist.lng b/interface/web/mail/lib/lang/ja_mail_blacklist.lng index 9007f6bb03de75efbc9877f14001161a3455e838..f20f0377a79581c779f19585d0a2cce666bed075 100644 --- a/interface/web/mail/lib/lang/ja_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/ja_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = '有効'; $wb['source_error_notempty'] = 'アドレスを指定ã—ã¦ãã ã•ã„'; $wb['type_txt'] = '種別'; $wb['limit_mailfilter_txt'] = 'メールフィルターãŒæœ€å¤§æ•°ã«é”ã—ãŸãŸã‚ã€ã“ã‚Œä»¥ä¸Šè¿½åŠ ã§ãã¾ã›ã‚“。'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/ja_mail_domain.lng b/interface/web/mail/lib/lang/ja_mail_domain.lng index 787937668c7a5fc0f7f9e24617ea1c577fe7a6e0..a96faaa367643c34ad2168927d2e26042cff8456 100644 --- a/interface/web/mail/lib/lang/ja_mail_domain.lng +++ b/interface/web/mail/lib/lang/ja_mail_domain.lng @@ -20,4 +20,6 @@ $wb['no_policy'] = '使ã‚ãªã„'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng index 6da7d05c5608ab897af68322f7c5a6e1203a84fd..28e009efe1de5ec9e38b4edd076f6961ecca8e6b 100644 --- a/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'ã‚ャッãƒã‚ªãƒ¼ãƒ«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒæœ€å¤§ $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/ja_mail_forward.lng b/interface/web/mail/lib/lang/ja_mail_forward.lng index f849f7bf18070bb4073d96c1982e26063dac971d..0d6b4312efb3fafa7b48f7ae62c11da3a58977a1 100644 --- a/interface/web/mail/lib/lang/ja_mail_forward.lng +++ b/interface/web/mail/lib/lang/ja_mail_forward.lng @@ -10,6 +10,6 @@ $wb['greylisting_txt'] = 'Enable greylisting'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'メールアドレスãŒé‡è¤‡ã—ã¦ã„ã¾ã™ã€‚'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -?> diff --git a/interface/web/mail/lib/lang/ja_mail_transport.lng b/interface/web/mail/lib/lang/ja_mail_transport.lng index a870dd118a849898c128694ecb3ad253db88ebd3..afccb0195637a98ad49bbb37eb0d73c4dc88150a 100644 --- a/interface/web/mail/lib/lang/ja_mail_transport.lng +++ b/interface/web/mail/lib/lang/ja_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = '優先度'; $wb['active_txt'] = '有効'; $wb['limit_mailrouting_txt'] = '最大数ã«é”ã—ãŸç‚ºã€ã“れ以上é…é€çµŒè·¯ã‚’è¿½åŠ ã§ãã¾ã›ã‚“。'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/ja_mail_whitelist.lng b/interface/web/mail/lib/lang/ja_mail_whitelist.lng index 74d51da927e3d437cdcf64b026dd43674bc3c932..40d9ac32a38c635f023b0efccf2d8e4db45606c6 100644 --- a/interface/web/mail/lib/lang/ja_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/ja_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = '有効'; $wb['source_error_notempty'] = 'アドレスを指定ã—ã¦ãã ã•ã„'; $wb['type_txt'] = '種別'; $wb['limit_mailfilter_txt'] = 'メールフィルターãŒæœ€å¤§æ•°ã«é”ã—ãŸãŸã‚ã€ã“ã‚Œä»¥ä¸Šè¿½åŠ ã§ãã¾ã›ã‚“。'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/ja_spamfilter_users.lng b/interface/web/mail/lib/lang/ja_spamfilter_users.lng index cd212e941845697a470401501d90929af3856203..5272d3f3e1b2de9e3aba322fd76a2cbbbd62560b 100644 --- a/interface/web/mail/lib/lang/ja_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/ja_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/nl_mail_alias.lng b/interface/web/mail/lib/lang/nl_mail_alias.lng index d327afa90c3008fe1e5ea678dea80dcee7f207d3..1ab52542abbafcaf5fbbffa944794a7bd4482cd9 100644 --- a/interface/web/mail/lib/lang/nl_mail_alias.lng +++ b/interface/web/mail/lib/lang/nl_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -?> diff --git a/interface/web/mail/lib/lang/nl_mail_blacklist.lng b/interface/web/mail/lib/lang/nl_mail_blacklist.lng index baa7b1ebba78ab8731efa719d7072d90faf4606b..e5a16aa6e0764d7e3308db4dfcc56656984011e7 100644 --- a/interface/web/mail/lib/lang/nl_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/nl_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Actief'; $wb['source_error_notempty'] = 'Adres is niet ingvuld.'; $wb['type_txt'] = 'Type'; $wb['limit_mailfilter_txt'] = 'Het max. aantal e-mail filters voor uw account is bereikt.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/nl_mail_domain.lng b/interface/web/mail/lib/lang/nl_mail_domain.lng index c4fe53c71893286ccc312710798a7b2256813139..0e8a912a71dc814f48a3dde7bed991b187a7b2ae 100644 --- a/interface/web/mail/lib/lang/nl_mail_domain.lng +++ b/interface/web/mail/lib/lang/nl_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng b/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng index ee9c1f7678ae28fb04365a245a331d5848c1397f..37e5c80abc2d86b960a970c362f7d3ab91d24905 100644 --- a/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Het max. aantal e-mail catchall accounts voor u $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/nl_mail_forward.lng b/interface/web/mail/lib/lang/nl_mail_forward.lng index 6bf586a0d2b849cf643a71d2cae3f7b5e74c5b86..33dadeef6b4c5877825b82d1f1e48f05cb3e97ce 100644 --- a/interface/web/mail/lib/lang/nl_mail_forward.lng +++ b/interface/web/mail/lib/lang/nl_mail_forward.lng @@ -10,6 +10,6 @@ $wb['greylisting_txt'] = 'Enable greylisting'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Duplicaat E-mail adres.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -?> diff --git a/interface/web/mail/lib/lang/nl_mail_transport.lng b/interface/web/mail/lib/lang/nl_mail_transport.lng index 9e792e87628d84e9f1c4517fb1948ffa9b9eb1df..d7ecc761e637a368d05af324b70af545cb806143 100644 --- a/interface/web/mail/lib/lang/nl_mail_transport.lng +++ b/interface/web/mail/lib/lang/nl_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Gesorteerd op'; $wb['active_txt'] = 'Actief'; $wb['limit_mailrouting_txt'] = 'Het max. aantal routes voor uw account is bereikt.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/nl_mail_whitelist.lng b/interface/web/mail/lib/lang/nl_mail_whitelist.lng index 604110edd55f3e73be41f805c46cea4ef420f22a..c91e09576877f05d160df4b77bb3c49e593e26c3 100644 --- a/interface/web/mail/lib/lang/nl_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/nl_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Actief'; $wb['source_error_notempty'] = 'Adres is niet ingvuld.'; $wb['type_txt'] = 'Type'; $wb['limit_mailfilter_txt'] = 'Het max. aantal e-mail filters voor uw account is bereikt.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/nl_spamfilter_users.lng b/interface/web/mail/lib/lang/nl_spamfilter_users.lng index 697e130b35b684598ec557f33e87614e51ad65b5..b9da8e7e4a56c55e18c2203361dd830f6dbaf113 100644 --- a/interface/web/mail/lib/lang/nl_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/nl_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/pl_mail_alias.lng b/interface/web/mail/lib/lang/pl_mail_alias.lng index 4833383342825b8118dc8294ae04192ad3000e36..6c49433b60ce13415437836040b61fdd2d4ecce6 100644 --- a/interface/web/mail/lib/lang/pl_mail_alias.lng +++ b/interface/web/mail/lib/lang/pl_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -?> diff --git a/interface/web/mail/lib/lang/pl_mail_blacklist.lng b/interface/web/mail/lib/lang/pl_mail_blacklist.lng index 528f2f741aee3944e1f99f015010dee5fc0a140a..28eba8e32a6da77c15d241c37c49ac5ddff09593 100644 --- a/interface/web/mail/lib/lang/pl_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/pl_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Aktywny'; $wb['source_error_notempty'] = 'Adres jest pusty.'; $wb['type_txt'] = 'Typ'; $wb['limit_mailfilter_txt'] = 'Maksymalna ilość filtrów dla Twojego konta zostaÅ‚a przekroczona.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/pl_mail_domain.lng b/interface/web/mail/lib/lang/pl_mail_domain.lng index e4483a0d641fd08c18c92c46ddb5fcb56ae3ae20..7ff3c297fff625d0dcaba6a4d48e14b44ca6eb54 100644 --- a/interface/web/mail/lib/lang/pl_mail_domain.lng +++ b/interface/web/mail/lib/lang/pl_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng b/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng index fad83875ca1b49db9b09a750e13b07c08348e2e6..644e90e6c5e3dd8fb464925ba766a6e924047409 100644 --- a/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Maksymalna ilość kont e-mail catchall dla Two $wb['source_txt'] = 'ŹródÅ‚o'; $wb['destination_error_isemail'] = 'Cel nie jest poprawnym adresem email.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/pl_mail_forward.lng b/interface/web/mail/lib/lang/pl_mail_forward.lng index ce79e1093894a8698e8d4dd9b3f3e63fa9ef1121..2c9c32adf722914535b7fb7135809b122ae55a60 100644 --- a/interface/web/mail/lib/lang/pl_mail_forward.lng +++ b/interface/web/mail/lib/lang/pl_mail_forward.lng @@ -10,6 +10,6 @@ $wb['greylisting_txt'] = 'Enable greylisting'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Duplikat adresów e-mail.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -?> diff --git a/interface/web/mail/lib/lang/pl_mail_transport.lng b/interface/web/mail/lib/lang/pl_mail_transport.lng index 514fc263a5353673f867df8295eb240e16340983..672a0c64559dec55a0a163e6551a4f8d50ff310a 100644 --- a/interface/web/mail/lib/lang/pl_mail_transport.lng +++ b/interface/web/mail/lib/lang/pl_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Sortuj wedÅ‚ug'; $wb['active_txt'] = 'Aktywny'; $wb['limit_mailrouting_txt'] = 'Maksymalna ilość Å›cieżek dla Twojego konta zostaÅ‚a przekroczona.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/pl_mail_whitelist.lng b/interface/web/mail/lib/lang/pl_mail_whitelist.lng index 203c5bae73b49489f47af28011cae1646f4880fd..f18521fe7f451ed6ae963a8be04331a54e465237 100644 --- a/interface/web/mail/lib/lang/pl_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/pl_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Aktywny'; $wb['source_error_notempty'] = 'Adres jest pusty.'; $wb['type_txt'] = 'Typ'; $wb['limit_mailfilter_txt'] = 'Maksymalna ilość filtrów e-mail dla Twojego konta zosaÅ‚a przekroczona.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/pl_spamfilter_users.lng b/interface/web/mail/lib/lang/pl_spamfilter_users.lng index c46589b18d71b76431e6f947bbce3f816432c012..5173099c274b83460b08b8b4416d406f3ddda793 100644 --- a/interface/web/mail/lib/lang/pl_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/pl_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/pt_mail_alias.lng b/interface/web/mail/lib/lang/pt_mail_alias.lng index 91736e3020e5cf35cc0b531357bdcafee9af050e..afb7408eab4d28e2896cf5a6324cdfbc8c512ea9 100644 --- a/interface/web/mail/lib/lang/pt_mail_alias.lng +++ b/interface/web/mail/lib/lang/pt_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -?> diff --git a/interface/web/mail/lib/lang/pt_mail_blacklist.lng b/interface/web/mail/lib/lang/pt_mail_blacklist.lng index b7be9be47761be813f051d4b712b081d83ef62ee..40fc089e0de2eccaa01f0e2d72857bd801f62ebf 100644 --- a/interface/web/mail/lib/lang/pt_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/pt_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Activo'; $wb['source_error_notempty'] = 'Endereço em branco.'; $wb['type_txt'] = 'Tipo'; $wb['limit_mailfilter_txt'] = 'O número máximo de filtros de correio para a conta foi atingido..'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/pt_mail_domain.lng b/interface/web/mail/lib/lang/pt_mail_domain.lng index 224a38a2e1ad21b8d5ede91973577613cd2b0cef..092f83f1cacc166cfb067a88b35a1ff969d563a2 100644 --- a/interface/web/mail/lib/lang/pt_mail_domain.lng +++ b/interface/web/mail/lib/lang/pt_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng b/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng index e81afd74b904f757edfe264b9146c95d64099ce3..8d8bac47bfc3ca5f5769973e03e56ebf33250be1 100644 --- a/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'O número máximo de catchall para este domÃni $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/pt_mail_forward.lng b/interface/web/mail/lib/lang/pt_mail_forward.lng index db67461967dd5fa9926bf34ea2dfb0a04d287ad8..3f0dc04f7c8897ddd10d0fe4dd2f91af88bc3f40 100644 --- a/interface/web/mail/lib/lang/pt_mail_forward.lng +++ b/interface/web/mail/lib/lang/pt_mail_forward.lng @@ -10,6 +10,6 @@ $wb['greylisting_txt'] = 'Enable greylisting'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Endereço de correio duplicado.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -?> diff --git a/interface/web/mail/lib/lang/pt_mail_transport.lng b/interface/web/mail/lib/lang/pt_mail_transport.lng index 3c676b8b4ad83f2dc0c10b57679069a44608ddfd..e41c129ac6d19d48c81a8045895e095b2a75542a 100644 --- a/interface/web/mail/lib/lang/pt_mail_transport.lng +++ b/interface/web/mail/lib/lang/pt_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Ordenar por'; $wb['active_txt'] = 'Activo'; $wb['limit_mailrouting_txt'] = 'O número máximo de rotas para a conta foi atingido.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/pt_mail_whitelist.lng b/interface/web/mail/lib/lang/pt_mail_whitelist.lng index 92cc78d80dda3724e35c90f8e1f690dbf6e5f9dd..678fb8257080b63e1b4f9271e1a0103aa19e6d0d 100644 --- a/interface/web/mail/lib/lang/pt_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/pt_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Activo'; $wb['source_error_notempty'] = 'Endereço em Branco.'; $wb['type_txt'] = 'Tipo'; $wb['limit_mailfilter_txt'] = 'O número máximo de filtros para a conta foi atingido.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/pt_spamfilter_users.lng b/interface/web/mail/lib/lang/pt_spamfilter_users.lng index 0ee8d37d50dcd22c40f553b7f0c985f2dad521d4..adec31f8a1bac31963273aaa04e4291b99b35378 100644 --- a/interface/web/mail/lib/lang/pt_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/pt_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/ro_mail_alias.lng b/interface/web/mail/lib/lang/ro_mail_alias.lng index d5e8e0fb0fe5ad882cd8035ea37565e9ee7474ad..389e96cb4cfcbebe5e23e381b6d0003c9b7a9a6a 100644 --- a/interface/web/mail/lib/lang/ro_mail_alias.lng +++ b/interface/web/mail/lib/lang/ro_mail_alias.lng @@ -3,9 +3,9 @@ $wb['email_txt'] = 'Email'; $wb['destination_txt'] = 'Destinatie'; $wb['active_txt'] = 'Active'; $wb['email_error_isemail'] = 'Adresa Email invlida'; -$wb['email_error_unique'] = 'Duplicat Emailaddress.'; +$wb['email_error_unique'] = 'Duplicat Email Address.'; $wb['no_domain_perm'] = 'NU aveti permisiunea pe acest Domain'; -$wb['destination_error_isemail'] = 'Destinatie Emailaddress invalida.'; +$wb['destination_error_isemail'] = 'Destinatie Email Address invalida.'; $wb['limit_mailalias_txt'] = 'Ati atins numarul maxim de alias-uri pentru contul dumneavoastra '; $wb['duplicate_mailbox_txt'] = 'There is already a mailbox with this email address'; $wb['domain_txt'] = 'Domain'; @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -?> diff --git a/interface/web/mail/lib/lang/ro_mail_blacklist.lng b/interface/web/mail/lib/lang/ro_mail_blacklist.lng index a0feb782628495633fa6eda926e034ff859b1b43..6416e190fe3c2c2ca8aa3ecc83f3242fd8dd48cf 100644 --- a/interface/web/mail/lib/lang/ro_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/ro_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Active'; $wb['source_error_notempty'] = 'Address este goala'; $wb['type_txt'] = 'Tip'; $wb['limit_mailfilter_txt'] = 'Numarul maxim de filtre pentru contul dumneavoastra'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/ro_mail_domain.lng b/interface/web/mail/lib/lang/ro_mail_domain.lng index ede56e351ed81099ff0610cb541a44736c3670e1..e0543f36ec34696741999ef853fe58e730469e33 100644 --- a/interface/web/mail/lib/lang/ro_mail_domain.lng +++ b/interface/web/mail/lib/lang/ro_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_selector_txt'] = 'DKIM-Selector'; $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng index c0689ca04465f0174fae8f64c43df4ef5d9d7d21..9de50490ad3ef5de39d0e5d5ae22d5c14a2c8985 100644 --- a/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'numarul maxim de CATCHALL pe contul dumneavoatr $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/ro_mail_forward.lng b/interface/web/mail/lib/lang/ro_mail_forward.lng index 5e00bf05271f58029e2676aad9430019bede7592..8d60b16de93d718262e732f8bf0d60e2769f6d77 100644 --- a/interface/web/mail/lib/lang/ro_mail_forward.lng +++ b/interface/web/mail/lib/lang/ro_mail_forward.lng @@ -10,6 +10,6 @@ $wb['greylisting_txt'] = 'Enable greylisting'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Duplicat Email Address.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -?> diff --git a/interface/web/mail/lib/lang/ro_mail_transport.lng b/interface/web/mail/lib/lang/ro_mail_transport.lng index 85fd99ad54788c2b526d4ed171390b823cee3045..736452a6c9dfcecaa6c462b6b49aa67f376783e2 100644 --- a/interface/web/mail/lib/lang/ro_mail_transport.lng +++ b/interface/web/mail/lib/lang/ro_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Sortare pe '; $wb['active_txt'] = 'Active'; $wb['limit_mailrouting_txt'] = 'numarul maxim de rute pentru contul dumneavoastra a fost atins'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/ro_mail_whitelist.lng b/interface/web/mail/lib/lang/ro_mail_whitelist.lng index 7a3f9f515cff3ecdfb765e7b21ad3f5e6dfc5ae4..b5ec3d1e9224e1c5fb7d4e85b5e47077f359059c 100644 --- a/interface/web/mail/lib/lang/ro_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/ro_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Active'; $wb['source_error_notempty'] = 'Addresa e necompletata'; $wb['type_txt'] = 'Tip'; $wb['limit_mailfilter_txt'] = 'numarul maxim de filtre pe contul dumneavoastra a fost atins'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/ro_spamfilter_users.lng b/interface/web/mail/lib/lang/ro_spamfilter_users.lng index c51b0b8182ce1a943fd625812cd1bf09dc847a37..bdc418c92c9a1627a678a4cb1ae50dbdc2a504f2 100644 --- a/interface/web/mail/lib/lang/ro_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/ro_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/ru_mail_alias.lng b/interface/web/mail/lib/lang/ru_mail_alias.lng index e093ad9986f792b3d587652d784f2848abddd957..fd15ffbc91f97dbab7ab3df85566ee6972eefc83 100644 --- a/interface/web/mail/lib/lang/ru_mail_alias.lng +++ b/interface/web/mail/lib/lang/ru_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'ÐлиаÑ'; $wb['greylisting_txt'] = 'Включить Ñерый ÑпиÑок (Greylisting)'; $wb['send_as_txt'] = 'Отправить как'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -?> diff --git a/interface/web/mail/lib/lang/ru_mail_blacklist.lng b/interface/web/mail/lib/lang/ru_mail_blacklist.lng index 986935386e8d9c0dc85ac0f48ed3cc29d0a02b44..33ef780ebd57c8ceec54127820184552da0d0cd8 100644 --- a/interface/web/mail/lib/lang/ru_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/ru_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Ðктивно'; $wb['source_error_notempty'] = 'ÐÐ´Ñ€ÐµÑ Ð¿ÑƒÑтой!'; $wb['type_txt'] = 'Тип'; $wb['limit_mailfilter_txt'] = 'МакÑимальное чиÑло почтовых фильтров доÑтигнуто.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/ru_mail_domain.lng b/interface/web/mail/lib/lang/ru_mail_domain.lng index adc1ac74cb19f282839e437d3a754b1224aa7de6..7567e3c67021d8976ced17565929119aa8e42424 100644 --- a/interface/web/mail/lib/lang/ru_mail_domain.lng +++ b/interface/web/mail/lib/lang/ru_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['dkim_selector_txt'] = 'DKIM-Ñелектор'; $wb['dkim_selector_error'] = 'Ðекорректный DKIM-Ñелектор. ИÑпользуйте только Ñтрочные буквенно-цифровые Ñимволы (a-z или 0-9) до 63 Ñимволов'; $wb['error_not_allowed_server_id'] = 'Выбранный Ñервер не доÑтупен Ð´Ð»Ñ Ñтой учетной запиÑи.'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng index 25349ca4972447406c55fcfa33558bbd548286a7..13ba70c92c2cdd04efc54c5ed9b0f834b3e29ff0 100644 --- a/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'МакÑимальное чиÑло МакÑ. $wb['source_txt'] = 'ИÑточник'; $wb['destination_error_isemail'] = 'Ðе выбран получатель или запиÑÑŒ некорректна.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Отправить как'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/ru_mail_forward.lng b/interface/web/mail/lib/lang/ru_mail_forward.lng index 6eb11f4f9130677a55bfc428eba2863e143b17b8..0be6608b806bf2f2a3cb6875a8291d0c8ea00c8e 100644 --- a/interface/web/mail/lib/lang/ru_mail_forward.lng +++ b/interface/web/mail/lib/lang/ru_mail_forward.lng @@ -10,6 +10,6 @@ $wb['greylisting_txt'] = 'Включить Ñерый ÑпиÑок (Greylisting) $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Ðекорректный почтовый адреÑ.'; +$wb['email_error_unique'] = 'Ð¢Ð°ÐºÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ уже еÑÑ‚ÑŒ.'; $wb['send_as_txt'] = 'Отправить как'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -?> diff --git a/interface/web/mail/lib/lang/ru_mail_transport.lng b/interface/web/mail/lib/lang/ru_mail_transport.lng index 05594256fd9b46f1a2e01f10e5a85d2e4946da40..2c6d758d9bf0966bcf2ebc6934f76d2cf748e4b4 100644 --- a/interface/web/mail/lib/lang/ru_mail_transport.lng +++ b/interface/web/mail/lib/lang/ru_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Сортировать по'; $wb['active_txt'] = 'Ðктивно'; $wb['limit_mailrouting_txt'] = 'ДоÑтигнуто макÑ. количеÑтво маршрутов Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ учетной запиÑи.'; $wb['transport_txt'] = 'ТранÑпорт'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/ru_mail_whitelist.lng b/interface/web/mail/lib/lang/ru_mail_whitelist.lng index bd8a1ae06b5d79174682ceef92a9c2d3278e2ab0..0e7a8f95b30a08a69644bbd0ab6b9b7389a5a1f7 100644 --- a/interface/web/mail/lib/lang/ru_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/ru_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Ðктивно'; $wb['source_error_notempty'] = 'ÐÐ´Ñ€ÐµÑ Ð¿ÑƒÑтой!'; $wb['type_txt'] = 'Тип'; $wb['limit_mailfilter_txt'] = 'МакÑимальное чиÑло почтовых фильтров доÑтигнуто.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/ru_spamfilter_users.lng b/interface/web/mail/lib/lang/ru_spamfilter_users.lng index 8fcfff421b33e42ac4ec30ba3886c6ccb74a0968..238f3b70480914256aa37f4a0ddb98c0550a1e9d 100644 --- a/interface/web/mail/lib/lang/ru_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/ru_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'Ð˜Ð¼Ñ Ð½Ðµ может быть пуÑтым.' $wb['10 - highest'] = '10 - Ñильный'; $wb['5 - medium'] = '5 - Ñредний'; $wb['1 - lowest'] = '1 - Ñлабый'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/se_mail_alias.lng b/interface/web/mail/lib/lang/se_mail_alias.lng index 441e33eac2d073df97e92803f6b61b732844eaba..5011c02a1ff9489580975f2f84ad711c31109cc8 100644 --- a/interface/web/mail/lib/lang/se_mail_alias.lng +++ b/interface/web/mail/lib/lang/se_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -?> diff --git a/interface/web/mail/lib/lang/se_mail_blacklist.lng b/interface/web/mail/lib/lang/se_mail_blacklist.lng index 34b1f76db96f694b1701f0aa4f2d6290ec03f1f4..82dc7e3fdc8181a5ef4e6b784d1d64021c5f899c 100644 --- a/interface/web/mail/lib/lang/se_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/se_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['recipient_txt'] = 'Mottagare'; $wb['source_error_notempty'] = 'Adressfältet är tomt.'; $wb['type_txt'] = 'Typ'; $wb['limit_mailfilter_txt'] = 'Det maximala antalet epostfilter för ditt konto är uppnÃ¥tt.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/se_mail_domain.lng b/interface/web/mail/lib/lang/se_mail_domain.lng index fcd87813ba65e13ae56347fda1917bf114caa201..7f192224e672a07b7e62cb5a38a2cfe14574df50 100644 --- a/interface/web/mail/lib/lang/se_mail_domain.lng +++ b/interface/web/mail/lib/lang/se_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanu $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['no_policy'] = '- ej aktiverat -'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/se_mail_domain_catchall.lng b/interface/web/mail/lib/lang/se_mail_domain_catchall.lng index 39c6e6c55943bb69f20f95d8aee594becf10e700..6724ff32041d4eb756d079d25df0c1f674c68ee0 100644 --- a/interface/web/mail/lib/lang/se_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/se_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Det maximala antalet catchall-adresser för dit $wb['source_txt'] = 'Källa'; $wb['destination_error_isemail'] = 'Destinationen när inte en giltig epostadress.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/se_mail_forward.lng b/interface/web/mail/lib/lang/se_mail_forward.lng index 7b0aa2bc163a924bb01a49550cd3ba44c36d8f49..4ac59fb99cb83f0a8cd958c163d6f2f597f7c4a2 100644 --- a/interface/web/mail/lib/lang/se_mail_forward.lng +++ b/interface/web/mail/lib/lang/se_mail_forward.lng @@ -10,6 +10,6 @@ $wb['greylisting_txt'] = 'Enable greylisting'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Epostadressen finns redan.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -?> diff --git a/interface/web/mail/lib/lang/se_mail_transport.lng b/interface/web/mail/lib/lang/se_mail_transport.lng index 70e26b78f9802d13f596e65e1aec79252d9481ff..73ac507b475fb070545d7dde19bce9130e465a60 100644 --- a/interface/web/mail/lib/lang/se_mail_transport.lng +++ b/interface/web/mail/lib/lang/se_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Sortera pÃ¥'; $wb['active_txt'] = 'Aktiv'; $wb['limit_mailrouting_txt'] = 'Det maximala antalet epostrutter för ditt konto är uppnÃ¥tt.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/se_mail_whitelist.lng b/interface/web/mail/lib/lang/se_mail_whitelist.lng index 7ce682ff6b83d2645fc92b43d77e1bc01060845e..d312ec947084e2ee6112d1d51bde3271eec42f5a 100644 --- a/interface/web/mail/lib/lang/se_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/se_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['recipient_txt'] = 'Mottagare'; $wb['source_error_notempty'] = 'Adressen är tom.'; $wb['type_txt'] = 'Typ'; $wb['limit_mailfilter_txt'] = 'Maximala antalet epostfilter för ditt konto är uppnÃ¥tt.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/se_spamfilter_users.lng b/interface/web/mail/lib/lang/se_spamfilter_users.lng index ba3b60e273cbac87369962e66c4b75f44f9c0d31..ca3fac06c20f3c748f8374a6f135da6d36346dd9 100644 --- a/interface/web/mail/lib/lang/se_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/se_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'Fältet för namn kan inte vara tomt.'; $wb['10 - highest'] = '10 - högsta'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lägsta'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/sk_mail_alias.lng b/interface/web/mail/lib/lang/sk_mail_alias.lng index 70b6b1c2468f81149c5978231b88df7a6f27bc8b..da89509e76de80a5a00e01222a6caae2d235de00 100644 --- a/interface/web/mail/lib/lang/sk_mail_alias.lng +++ b/interface/web/mail/lib/lang/sk_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Alias'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -?> diff --git a/interface/web/mail/lib/lang/sk_mail_blacklist.lng b/interface/web/mail/lib/lang/sk_mail_blacklist.lng index d5775a66420d623f659aea37ded6d0e768209623..277a7bf1ec3e8a047e1c8331c05f6908189ad8c6 100644 --- a/interface/web/mail/lib/lang/sk_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/sk_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'AktÃvne'; $wb['source_error_notempty'] = 'Adresa je prázdna.'; $wb['type_txt'] = 'Typ'; $wb['limit_mailfilter_txt'] = 'Max. poÄet e-mailových filtrov pre váš úÄet je dosiahnutý.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/sk_mail_domain.lng b/interface/web/mail/lib/lang/sk_mail_domain.lng index dfe8ce88997e3a3a07954662e7e8cb2dcda20e82..ed67d200441cfe685faeac5f4f4a19e1c6602134 100644 --- a/interface/web/mail/lib/lang/sk_mail_domain.lng +++ b/interface/web/mail/lib/lang/sk_mail_domain.lng @@ -20,4 +20,6 @@ $wb['no_policy'] = '- Nie je aktivovaný -'; $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; $wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; $wb['dkim_selector_txt'] = 'DKIM-Selector'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng b/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng index 03c701c6db9edef1841ce6f03cc7d85059d486b9..012a585ee878ccca90235d4b7a7e565dbfc55caa 100644 --- a/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Max. poÄet e-mailových doménových koÅ¡ov pr $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; $wb['greylisting_txt'] = 'Enable greylisting'; -?> +$wb['send_as_txt'] = 'Send as'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/sk_mail_forward.lng b/interface/web/mail/lib/lang/sk_mail_forward.lng index 399971261aa76a5d0d3bf6c48333b66b7324c94f..77306001256da786403b0d9819cdfb9d207a64fb 100644 --- a/interface/web/mail/lib/lang/sk_mail_forward.lng +++ b/interface/web/mail/lib/lang/sk_mail_forward.lng @@ -10,6 +10,6 @@ $wb['greylisting_txt'] = 'Enable greylisting'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_unique'] = 'Duplicitná email adresa.'; $wb['send_as_txt'] = 'Send as'; $wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -?> diff --git a/interface/web/mail/lib/lang/sk_mail_transport.lng b/interface/web/mail/lib/lang/sk_mail_transport.lng index b27c585b0460fdd55816e3f638dc85f6e04b2d42..e35f9d77b28dcfed5e29456ff3d7d3a01736e06c 100644 --- a/interface/web/mail/lib/lang/sk_mail_transport.lng +++ b/interface/web/mail/lib/lang/sk_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'TriediÅ¥ podľa'; $wb['active_txt'] = 'AktÃvny'; $wb['limit_mailrouting_txt'] = 'Max. poÄet trás pre váš úÄet je dosiahnutý.'; $wb['transport_txt'] = 'Transport'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/sk_mail_whitelist.lng b/interface/web/mail/lib/lang/sk_mail_whitelist.lng index 6e2107a0d8d304520c5f91083ef9858cf8d0da10..77e44841fd188209aca8af9b9fd04016410d35e0 100644 --- a/interface/web/mail/lib/lang/sk_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/sk_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'AktÃvne'; $wb['source_error_notempty'] = 'Adresa je prázdna.'; $wb['type_txt'] = 'Typ'; $wb['limit_mailfilter_txt'] = 'Max. poÄet e-mailových filtrov pre váš úÄet je dosiahnutý.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/sk_spamfilter_users.lng b/interface/web/mail/lib/lang/sk_spamfilter_users.lng index 89bc415672edb4dc6fd367015f0560ff3e13e0f9..dfd74a3291eca5b2766e12ab8fd08b8962bef45d 100644 --- a/interface/web/mail/lib/lang/sk_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/sk_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/lang/tr_mail_alias.lng b/interface/web/mail/lib/lang/tr_mail_alias.lng index ea440b2e63004a783c017a9c6580106493e34cd8..f049c2b270225c7be24d2389786b9a7796e42b79 100644 --- a/interface/web/mail/lib/lang/tr_mail_alias.lng +++ b/interface/web/mail/lib/lang/tr_mail_alias.lng @@ -14,4 +14,3 @@ $wb['source_txt'] = 'Takma Ad'; $wb['send_as_txt'] = 'Gönderen'; $wb['send_as_exp'] = 'Hedef bu adresi kaynak olarak göstererek e-posta gönderebilsin'; $wb['greylisting_txt'] = 'Gri Liste Kullanılsın'; -?> diff --git a/interface/web/mail/lib/lang/tr_mail_blacklist.lng b/interface/web/mail/lib/lang/tr_mail_blacklist.lng index 381a11fa98c2f651fd77a823bff5c88e4cb0ebda..7712ca086d3721b9718a5857ec607b67df745e35 100644 --- a/interface/web/mail/lib/lang/tr_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/tr_mail_blacklist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Etkin'; $wb['source_error_notempty'] = 'Adres boÅŸ olamaz.'; $wb['type_txt'] = 'Tür'; $wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla e-posta süzgeci sayısına ulaÅŸtınız.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Blacklist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/tr_mail_domain.lng b/interface/web/mail/lib/lang/tr_mail_domain.lng index 3e7d9cc4122771cb73fdcf4d7e212007959b37fb..802fdcf94b8ee1bc3262484864fb09116a868213 100644 --- a/interface/web/mail/lib/lang/tr_mail_domain.lng +++ b/interface/web/mail/lib/lang/tr_mail_domain.lng @@ -20,4 +20,6 @@ $wb['dkim_settings_txt'] = 'DomainKeys Tanımlı E-posta (DKIM)'; $wb['error_not_allowed_server_id'] = 'SeçilmiÅŸ sunucuda bu hesap kullanılamaz.'; $wb['dkim_selector_txt'] = 'DKIM Seçici'; $wb['dkim_selector_error'] = 'DKIM seçici geçersiz. En fazla 63 karakter uzunluÄŸunda, yalnız küçük Ä°ngilizce harf ve rakamları kullanın (a-z ya da 0-9)'; -?> +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost User'; +$wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng b/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng index bcdf6298469c4abae5b2785636387d18a12f73cd..1cb732b58bc83a6b7d72e8f6c3f03cdb98442486 100644 --- a/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla tümü $wb['domain_txt'] = 'Etki Alanı'; $wb['source_txt'] = 'Kaynak'; $wb['destination_error_isemail'] = 'Hedef e-posta adresi geçersiz.'; -?> +$wb['send_as_txt'] = 'Gönderen'; +$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain'; diff --git a/interface/web/mail/lib/lang/tr_mail_forward.lng b/interface/web/mail/lib/lang/tr_mail_forward.lng index bdcd02a8623c212d9bfe7a8045a9d8d302becdaa..03624e56b6b874b3bcc893fd4bc6f167812f27b2 100644 --- a/interface/web/mail/lib/lang/tr_mail_forward.lng +++ b/interface/web/mail/lib/lang/tr_mail_forward.lng @@ -9,7 +9,7 @@ $wb['source_txt'] = 'Kaynak E-posta'; $wb['destination_error_empty'] = 'The destination must not be empty.'; $wb['destination_error_isemail'] = 'The destination contains at least one invalid email address.'; $wb['email_error_isemail'] = 'Lütfen geçerli bir e-posta adresi yazın.'; +$wb['email_error_unique'] = 'Bu e-posta adresi zaten var'; $wb['send_as_txt'] = 'Gönderen'; $wb['send_as_exp'] = 'Hedef bu adresi kaynak olarak göstererek e-posta gönderebilsin (hedef iç kullanıcı ise)'; $wb['greylisting_txt'] = 'Gri Liste Kullanılsın'; -?> diff --git a/interface/web/mail/lib/lang/tr_mail_transport.lng b/interface/web/mail/lib/lang/tr_mail_transport.lng index 0b417703924b126b2dcfbf5a46fd13d30861844c..bc318545a972e1c67221d6941e94bda87137dba4 100644 --- a/interface/web/mail/lib/lang/tr_mail_transport.lng +++ b/interface/web/mail/lib/lang/tr_mail_transport.lng @@ -8,4 +8,4 @@ $wb['sort_order_txt'] = 'Sıralama'; $wb['active_txt'] = 'Etkin'; $wb['limit_mailrouting_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla yöneltme sayısına ulaÅŸtınız.'; $wb['transport_txt'] = 'Aktarım'; -?> +$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; diff --git a/interface/web/mail/lib/lang/tr_mail_whitelist.lng b/interface/web/mail/lib/lang/tr_mail_whitelist.lng index c6272a9ede18c272efb8036cc8b7022ffebec0f4..8159b11eddbb3074ba5695407400df31e8c4404f 100644 --- a/interface/web/mail/lib/lang/tr_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/tr_mail_whitelist.lng @@ -6,4 +6,7 @@ $wb['active_txt'] = 'Etkin'; $wb['source_error_notempty'] = 'Adres boÅŸ olamaz.'; $wb['type_txt'] = 'Tür'; $wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla e-posta süzgeci sayısına ulaÅŸtınız.'; -?> +$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.'; +$wb['mail_access_unique'] = 'Whitelist Address already in use.'; +$wb['client_txt'] = 'Client'; +$wb['sender_txt'] = 'Sender'; diff --git a/interface/web/mail/lib/lang/tr_spamfilter_users.lng b/interface/web/mail/lib/lang/tr_spamfilter_users.lng index 33ef04c610b94444dce3ce0571056630a08278d2..10144b8232ab2bd2116511e2de960160947a2684 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_users.lng @@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'Ad boÅŸ olamaz.'; $wb['10 - highest'] = '10 - en yüksek'; $wb['5 - medium'] = '5 - orta'; $wb['1 - lowest'] = '1 - en düşük'; -?> +$wb['inherit_policy'] = '- Inherit domain setting -'; diff --git a/interface/web/mail/lib/module.conf.php b/interface/web/mail/lib/module.conf.php index d9d97bc8b2fb72c4b161791023177368f901000e..fbe8ffbcb5785e4737d676034edd5cba0d9cc13d 100644 --- a/interface/web/mail/lib/module.conf.php +++ b/interface/web/mail/lib/module.conf.php @@ -61,6 +61,20 @@ if($app->auth->get_client_limit($userid, 'mailcatchall') != 0) 'html_id' => 'mail_domain_catchall_list'); } +if(! $app->auth->is_admin()) +{ + $items[] = array( 'title' => 'Email Whitelist', + 'target' => 'content', + 'link' => 'mail/mail_whitelist_list.php', + 'html_id' => 'mail_whitelist_list'); + + + $items[] = array( 'title' => 'Email Blacklist', + 'target' => 'content', + 'link' => 'mail/mail_blacklist_list.php', + 'html_id' => 'mail_blacklist_list'); +} + if($app->auth->get_client_limit($userid, 'mailrouting') != 0) { $items[] = array( 'title' => 'Email Routing', @@ -110,8 +124,8 @@ if($app->auth->get_client_limit($userid, 'spamfilter_wblist') != 0) 'html_id' => 'spamfilter_blacklist_list'); } -if($app->auth->is_admin()) { - +if($app->auth->is_admin()) +{ $items[] = array( 'title' => 'User / Domain', 'target' => 'content', 'link' => 'mail/spamfilter_users_list.php', @@ -191,7 +205,9 @@ $items[] = array( 'title' => 'Mailbox traffic', 'target' => 'content', 'link' => 'mail/mail_user_stats.php', 'html_id' => 'mail_user_stats'); -if($app->auth->get_client_limit($userid, 'backup') == 'y') { + +if($app->auth->get_client_limit($userid, 'backup') == 'y') +{ $items[] = array ( 'title' => 'Backup Stats', 'target' => 'content', @@ -206,8 +222,8 @@ $module['nav'][] = array( 'title' => 'Statistics', //**** Global filters menu $items = array(); -if($_SESSION['s']['user']['typ'] == 'admin') { - +if($app->auth->is_admin()) +{ $items[] = array( 'title' => 'Postfix Whitelist', 'target' => 'content', 'link' => 'mail/mail_whitelist_list.php', diff --git a/interface/web/mail/list/mail_blacklist.list.php b/interface/web/mail/list/mail_blacklist.list.php index a2f3997fd7aaa5c080c8d1072aca29030c08659f..d51f31a7d83142f83e656bdee001ba3f9c4ae67c 100644 --- a/interface/web/mail/list/mail_blacklist.list.php +++ b/interface/web/mail/list/mail_blacklist.list.php @@ -78,10 +78,20 @@ $liste["item"][] = array( 'field' => "source", 'op' => "like", 'prefix' => "%", 'suffix' => "%", + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT access_id,source FROM mail_access WHERE {AUTHSQL} ORDER BY source', + 'keyfield'=> 'access_id', + 'valuefield'=> 'source' + ), 'width' => "", 'value' => ""); +if ($app->auth->is_admin()) { + $type_values = array('recipient' => 'Recipient', 'sender' => 'Sender', 'client' => 'Client'); +} else { + $type_values = array('recipient' => 'Recipient', 'sender' => 'Sender'); +} $liste["item"][] = array( 'field' => "type", 'datatype' => "VARCHAR", 'formtype' => "SELECT", @@ -89,7 +99,6 @@ $liste["item"][] = array( 'field' => "type", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('recipient' => 'Recipient', 'sender' => 'Sender', 'client' => 'Client')); - + 'value' => $type_values); ?> diff --git a/interface/web/mail/list/mail_whitelist.list.php b/interface/web/mail/list/mail_whitelist.list.php index e27edad6dabee79f085dc64b67a96eabad31723c..b4c97f493ffd3388f278891618cbcce5496c16ca 100644 --- a/interface/web/mail/list/mail_whitelist.list.php +++ b/interface/web/mail/list/mail_whitelist.list.php @@ -78,9 +78,20 @@ $liste["item"][] = array( 'field' => "source", 'op' => "like", 'prefix' => "%", 'suffix' => "%", + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT access_id,source FROM mail_access WHERE {AUTHSQL} ORDER BY source', + 'keyfield'=> 'access_id', + 'valuefield'=> 'source' + ), 'width' => "", 'value' => ""); + +if ($app->auth->is_admin()) { + $type_values = array('recipient' => 'Recipient', 'sender' => 'Sender', 'client' => 'Client'); +} else { + $type_values = array('recipient' => 'Recipient', 'sender' => 'Sender'); +} $liste["item"][] = array( 'field' => "type", 'datatype' => "VARCHAR", 'formtype' => "SELECT", @@ -88,7 +99,6 @@ $liste["item"][] = array( 'field' => "type", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('recipient' => 'recipient_txt', 'sender' => 'sender_txt', 'client' => 'client_txt')); - + 'value' => $type_values); ?> diff --git a/interface/web/mail/mail_blacklist_del.php b/interface/web/mail/mail_blacklist_del.php index aa671c488714f0f76af47e45aafad673ecb32eca..3cb83a50a00dcc3859335bc5f7e3df4546c1994b 100644 --- a/interface/web/mail/mail_blacklist_del.php +++ b/interface/web/mail/mail_blacklist_del.php @@ -42,9 +42,6 @@ $tform_def_file = "form/mail_blacklist.tform.php"; require_once '../../lib/config.inc.php'; require_once '../../lib/app.inc.php'; - -if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin privileges'); - //* Check permissions for module $app->auth->check_module_permissions('mail'); diff --git a/interface/web/mail/mail_blacklist_edit.php b/interface/web/mail/mail_blacklist_edit.php index b86729b919e9d08a8855d972d8c447e48a36bc3b..e1cb2de66b1f6346730be53bb2d13dda22fb7b71 100644 --- a/interface/web/mail/mail_blacklist_edit.php +++ b/interface/web/mail/mail_blacklist_edit.php @@ -50,39 +50,82 @@ $app->load('tform_actions'); class page_action extends tform_actions { + protected $client_allowed_types = array( 'recipient', 'sender' ); + function onShowNew() { - global $app, $conf; + global $app; + + if($_SESSION["s"]["user"]["typ"] != 'admin') { + if(!$app->tform->checkClientLimit('limit_mail_wblist')) { + $app->error($app->tform->wordbook["limit_mail_wblist_txt"]); + } + if(!$app->tform->checkResellerLimit('limit_mail_wblist')) { + $app->error('Reseller: '.$app->tform->wordbook["limit_mail_wblist_txt"]); + } + } - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); parent::onShowNew(); } - function onBeforeUpdate() { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); - //* Check if the server has been changed - // We do this only for the admin or reseller users, as normal clients can not change the server ID anyway - if($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) { - $rec = $app->db->queryOneRecord("SELECT server_id from mail_access WHERE access_id = ?", $this->id); - if($rec['server_id'] != $this->dataRecord["server_id"]) { - //* Add a error message and switch back to old server - $app->tform->errorMessage .= $app->lng('The Server can not be changed.'); - $this->dataRecord["server_id"] = $rec['server_id']; - } - unset($rec); + $rec = $app->db->queryOneRecord("SELECT server_id from mail_access WHERE access_id = ?", $this->id); + if($rec['server_id'] != $this->dataRecord["server_id"]) { + //* Add a error message and switch back to old server + $app->tform->errorMessage .= $app->lng('The Server can not be changed.'); + $this->dataRecord["server_id"] = $rec['server_id']; } + unset($rec); } function onSubmit() { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); - + // Non-admin checks + if($_SESSION["s"]["user"]["typ"] != 'admin') { + // Non-admin can only use type 'sender' or 'recipient' + if(! in_array($this->dataRecord["type"], $this->client_allowed_types)) { + $app->tform->errorMessage .= $app->lng('Blacklist type requires admin permissions'); + } + + // Address must be valid email + if(! filter_var( $this->dataRecord["source"], FILTER_VALIDATE_EMAIL )) { + $app->tform->errorMessage .= $app->lng('Invalid address: must be a valid email address'); + } + + // Address must belong to the client's domains + $tmp = explode('@', $this->dataRecord["source"]); + $domain = trim( array_pop($tmp) ); + $AUTHSQL = $app->tform->getAuthSQL('r'); + $rec = $app->db->queryOneRecord("SELECT domain_id from mail_domain WHERE ${AUTHSQL} AND domain = ?", $domain); + if(! (is_array($rec) && isset($rec['domain_id']) && is_numeric($rec['domain_id']))) { + $app->tform->errorMessage .= $app->lng('Invalid address: you have no permission for this domain.'); + } + unset($rec); + + // Check the client limits + $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); + $client = $app->db->queryOneRecord("SELECT limit_mail_wblist FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); + if($this->id == 0 && $client["limit_mail_wblist"] >= 0) { + $TYPES_LIST = "('" . join("', '", $this->client_allowed_types) . "')"; + $tmp = $app->db->queryOneRecord("SELECT count(access_id) as number FROM mail_access WHERE ${AUTHSQL} AND type in ${TYPES_LIST}"); + if($tmp["number"] >= $client["limit_mail_wblist"]) { + $app->tform->errorMessage .= $app->tform->wordbook["limit_mail_wblist_txt"]."<br>"; + } + unset($tmp); + } + } + if(substr($this->dataRecord['source'], 0, 1) === '@') $this->dataRecord['source'] = substr($this->dataRecord['source'], 1); - + + $rec = $app->db->queryOneRecord("SELECT access_id from mail_access WHERE server_id = ? AND source = ? and type = ?", $this->dataRecord["server_id"], $this->dataRecord["source"], $this->dataRecord["type"]); + if(is_array($rec) && isset($rec['access_id'])) { + $app->tform->errorMessage .= $app->tform->wordbook["mail_access_unique"]."<br>"; + } + unset($rec); + parent::onSubmit(); } @@ -91,5 +134,4 @@ class page_action extends tform_actions { $app->tform_actions = new page_action; $app->tform_actions->onLoad(); - ?> diff --git a/interface/web/mail/mail_blacklist_list.php b/interface/web/mail/mail_blacklist_list.php index ecb24d867c740f2f7853fd46d4d7f52ed1a5bf6b..cf1e50ddaaf5a319cc605f1376ac47d0e6921a4a 100644 --- a/interface/web/mail/mail_blacklist_list.php +++ b/interface/web/mail/mail_blacklist_list.php @@ -12,8 +12,6 @@ $list_def_file = "list/mail_blacklist.list.php"; * End Form configuration ******************************************/ -if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin privileges'); - //* Check permissions for module $app->auth->check_module_permissions('mail'); diff --git a/interface/web/mail/mail_domain_del.php b/interface/web/mail/mail_domain_del.php index bce89695dc53ee1e016aec966a2d5030014b2db9..e4c26399ef110cb0079f6162c0e5ba58f6ce6af4 100644 --- a/interface/web/mail/mail_domain_del.php +++ b/interface/web/mail/mail_domain_del.php @@ -80,6 +80,10 @@ class page_action extends tform_actions { // Delete all spamfilters that belong to this domain $records = $app->db->queryAllRecords("SELECT id FROM spamfilter_users WHERE email like ?", '%@' . $domain); foreach($records as $rec) { + $wblists = $app->db->queryAllRecords("SELECT wblist_id FROM spamfilter_wblist WHERE rid = ?", $rec['id']); + foreach($wblists as $wblist) { + $app->db->datalogDelete('spamfilter_wblist', 'wblist_id', $wblist['wblist_id']); + } $app->db->datalogDelete('spamfilter_users', 'id', $rec['id']); } diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php index 7409bf0c7c42136595dad22c1abafc07fa1c4399..48f6eb2e4d5f5ec90bd8f27cec7491147301ec62 100644 --- a/interface/web/mail/mail_domain_edit.php +++ b/interface/web/mail/mail_domain_edit.php @@ -190,20 +190,19 @@ class page_action extends tform_actions { $app->tpl->setVar("domain_module", 0); } - - // Get the spamfilter policys for the user + // Get the spamfilter policies for the user $tmp_user = $app->db->queryOneRecord("SELECT policy_id FROM spamfilter_users WHERE email = ?", '@' . $this->dataRecord["domain"]); $sql = "SELECT id, policy_name FROM spamfilter_policy WHERE ".$app->tform->getAuthSQL('r')." ORDER BY policy_name"; - $policys = $app->db->queryAllRecords($sql); - $policy_select = "<option value='0'>".$app->tform->wordbook["no_policy"]."</option>"; - if(is_array($policys)) { - foreach( $policys as $p) { + $policies = $app->db->queryAllRecords($sql); + $policy_select = "<option value='0'".(($tmp_user['policy_id'] == 0) ? " SELECTED>":">").$app->tform->wordbook["no_policy"]."</option>"; + if(is_array($policies)) { + foreach( $policies as $p) { $selected = ($p["id"] == $tmp_user["policy_id"])?'SELECTED':''; $policy_select .= "<option value='$p[id]' $selected>" . $app->functions->htmlentities($p['policy_name']) . "</option>\r\n"; } } $app->tpl->setVar("policy", $policy_select); - unset($policys); + unset($policies); unset($policy_select); unset($tmp_user); @@ -215,24 +214,50 @@ class page_action extends tform_actions { $app->tpl->setVar("edit_disabled", 0); } + // Check wether per domain relaying is enabled or not + $global_config = $app->getconf->get_global_config('mail'); + if($global_config['show_per_domain_relay_options'] == 'y') { + $app->tpl->setVar("show_per_domain_relay_options", 1); + } else { + $app->tpl->setVar("show_per_domain_relay_options", 0); + } + + // Get the limits of the client + $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); + $client = $app->db->queryOneRecord("SELECT limit_relayhost FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); + if ($client["limit_relayhost"] == 'y' || $_SESSION["s"]["user"]["typ"] == 'admin') { + $app->tpl->setVar("limit_relayhost", 1); + } else { + $app->tpl->setVar("limit_relayhost", 0); + } + + // load relayhost-values + if ($client["limit_relayhost"] == 'y') { + $sql = "SELECT relay_host, relay_user, relay_pass FROM mail_domain WHERE domain_id = ?"; + $rec = $app->db->queryOneRecord($sql, $app->functions->intval($_GET['id'])); + $app->tpl->setVar('relay_host', $rec['relay_host'], true); + $app->tpl->setVar('relay_user', $rec['relay_user'], true); + $app->tpl->setVar('relay_pass', $rec['relay_pass'], true); + } + // load dkim-values $sql = "SELECT domain, dkim_private, dkim_public, dkim_selector FROM mail_domain WHERE domain_id = ?"; $rec = $app->db->queryOneRecord($sql, $app->functions->intval($_GET['id'])); $dns_key = str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"),'',$rec['dkim_public']); - + $keyparts = str_split('v=DKIM1; t=s; p=' . $dns_key, 200); array_walk($keyparts, function(&$value, $key) { $value = '"'.$value.'"'; } ); $dkim_txt = implode('', $keyparts); $dns_record = $rec['dkim_selector'] . '._domainkey.' . $rec['domain'] . '. 3600 IN TXT '.$dkim_txt; - + $app->tpl->setVar('dkim_selector', $rec['dkim_selector'], true); $app->tpl->setVar('dkim_private', $rec['dkim_private'], true); $app->tpl->setVar('dkim_public', $rec['dkim_public'], true); if (!empty($rec['dkim_public'])) $app->tpl->setVar('dns_record', $dns_record, true); parent::onShowEnd(); - } + } function onSubmit() { global $app, $conf; @@ -260,8 +285,14 @@ class page_action extends tform_actions { // When the record is updated if($this->id > 0) { // restore the server ID if the user is not admin and record is edited - $tmp = $app->db->queryOneRecord("SELECT server_id FROM mail_domain WHERE domain_id = ?", $this->id); + $tmp = $app->db->queryOneRecord("SELECT server_id, relay_host, relay_user, relay_pass FROM mail_domain WHERE domain_id = ?", $this->id); $this->dataRecord["server_id"] = $tmp["server_id"]; + + // set the settings to current if not provided (or cleared due to limits) + if($this->dataRecord['relay_host'] == '') $this->dataRecord['relay_host'] = $tmp['relay_host']; + if($this->dataRecord['relay_user'] == '') $this->dataRecord['relay_user'] = $tmp['relay_user']; + if($this->dataRecord['relay_pass'] == '') $this->dataRecord['relay_pass'] = $tmp['relay_pass']; + unset($tmp); // When the record is inserted } else { @@ -289,7 +320,7 @@ class page_action extends tform_actions { $this->dataRecord["domain"] = $app->functions->idn_encode($this->dataRecord["domain"]); $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]); } - + //* server_id must be > 0 if(isset($this->dataRecord["server_id"]) && $this->dataRecord["server_id"] < 1) $app->tform->errorMessage .= $app->lng("server_id_0_error_txt"); @@ -298,35 +329,35 @@ class page_action extends tform_actions { function onAfterInsert() { global $app, $conf; - + $domain = $app->functions->idn_encode($this->dataRecord["domain"]); // Spamfilter policy $policy_id = $app->functions->intval($this->dataRecord["policy"]); - if($policy_id > 0) { - $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", '@' . $domain); - if($tmp_user["id"] > 0) { - // There is already a record that we will update + $tmp_user = $app->db->queryOneRecord("SELECT id, policy_id FROM spamfilter_users WHERE email = ?", '@' . $domain); + if($tmp_user["id"] > 0) { + // There is already a record that we will update + if($policy_id != $tmp_user['policy_id']) { $app->db->datalogUpdate('spamfilter_users', array("policy_id" => $policy_id), 'id', $tmp_user["id"]); - } else { - $tmp_domain = $app->db->queryOneRecord("SELECT sys_groupid FROM mail_domain WHERE domain_id = ?", $this->id); - // We create a new record - $insert_data = array( - "sys_userid" => $_SESSION["s"]["user"]["userid"], - "sys_groupid" => $tmp_domain["sys_groupid"], - "sys_perm_user" => 'riud', - "sys_perm_group" => 'riud', - "sys_perm_other" => '', - "server_id" => $this->dataRecord["server_id"], - "priority" => 5, - "policy_id" => $policy_id, - "email" => '@' . $domain, - "fullname" => '@' . $domain, - "local" => 'Y' - ); - $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); - unset($tmp_domain); } + } else { + $tmp_domain = $app->db->queryOneRecord("SELECT sys_groupid FROM mail_domain WHERE domain_id = ?", $this->id); + // We create a new record + $insert_data = array( + "sys_userid" => $_SESSION["s"]["user"]["userid"], + "sys_groupid" => $tmp_domain["sys_groupid"], + "sys_perm_user" => 'riud', + "sys_perm_group" => 'riud', + "sys_perm_other" => '', + "server_id" => $this->dataRecord["server_id"], + "priority" => 5, + "policy_id" => $policy_id, + "email" => '@' . $domain, + "fullname" => '@' . $domain, + "local" => 'Y' + ); + $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); + unset($tmp_domain); } // endif spamfilter policy //* create dns-record with dkim-values if the zone exists @@ -343,7 +374,7 @@ class page_action extends tform_actions { function onBeforeUpdate() { global $app, $conf; - + $domain = $app->functions->idn_encode($this->dataRecord["domain"]); //* Check if the server has been changed @@ -374,48 +405,76 @@ class page_action extends tform_actions { global $app, $conf; $domain = $app->functions->idn_encode($this->dataRecord["domain"]); - + $old_domain = $app->functions->idn_encode($this->oldDataRecord["domain"]); + // Spamfilter policy $policy_id = $app->functions->intval($this->dataRecord["policy"]); + + // If domain changes, update spamfilter_users + // and fire spamfilter_wblist_update events so rspamd files are rewritten + $skip_spamfilter_users_update = false; + if($old_domain != $domain) { + $tmp_old = $app->db->queryOneRecord("SELECT id,fullname FROM spamfilter_users WHERE email = ?", '@' . $old_domain); + if($tmp_old['id'] > 0) { + $tmp_new = $app->db->queryOneRecord("SELECT id,fullname FROM spamfilter_users WHERE email = ?", '@' . $domain); + if($tmp_new['id'] > 0) { + // There is a spamfilter_users for both old and new domain, we'll update old wblist entries + $tmp_wblist = $app->db->queryAllRecords("SELECT wblist_id FROM spamfilter_wblist WHERE rid = ?", $tmp_old['id']); + foreach ($tmp_wblist as $tmp) { + $app->db->datalogUpdate('spamfilter_wblist', array('rid' => $tmp_new['id']), 'wblist_id', $tmp['wblist_id']); + } + + // now delete old spamfilter_users entry + $app->db->datalogDelete('spamfilter_users', 'id', $tmp_old['id']); + } else { + $update_data = array( + 'email' => '@' . $domain, + 'policy_id' => $policy_id, + ); + if($tmp_old['fullname'] == '@' . $old_domain) { + $update_data['fullname'] = '@' . $domain; + } + $app->db->datalogUpdate('spamfilter_users', $update_data, 'id', $tmp_old['id']); + $skip_spamfilter_users_update = true; + } + } + } + $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", '@' . $domain); - if($policy_id > 0) { - if($tmp_user["id"] > 0) { - // There is already a record that we will update + if($tmp_user["id"] > 0) { + // There is already a record that we will update + if((! $skip_spamfilter_users_update) && ($policy_id != $tmp_user['policy_id'])) { $app->db->datalogUpdate('spamfilter_users', array("policy_id" => $policy_id), 'id', $tmp_user["id"]); - } else { - $tmp_domain = $app->db->queryOneRecord("SELECT sys_groupid FROM mail_domain WHERE domain_id = ?", $this->id); - // We create a new record - $insert_data = array( - "sys_userid" => $_SESSION["s"]["user"]["userid"], - "sys_groupid" => $tmp_domain["sys_groupid"], - "sys_perm_user" => 'riud', - "sys_perm_group" => 'riud', - "sys_perm_other" => '', - "server_id" => $this->dataRecord["server_id"], - "priority" => 5, - "policy_id" => $policy_id, - "email" => '@' . $domain, - "fullname" => '@' . $domain, - "local" => 'Y' - ); - $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); - unset($tmp_domain); } } else { - if($tmp_user["id"] > 0) { - // There is already a record but the user shall have no policy, so we delete it - $app->db->datalogDelete('spamfilter_users', 'id', $tmp_user["id"]); - } + $tmp_domain = $app->db->queryOneRecord("SELECT sys_groupid FROM mail_domain WHERE domain_id = ?", $this->id); + // We create a new record + $insert_data = array( + "sys_userid" => $_SESSION["s"]["user"]["userid"], + "sys_groupid" => $tmp_domain["sys_groupid"], + "sys_perm_user" => 'riud', + "sys_perm_group" => 'riud', + "sys_perm_other" => '', + "server_id" => $this->dataRecord["server_id"], + "priority" => 5, + "policy_id" => $policy_id, + "email" => '@' . $domain, + "fullname" => '@' . $domain, + "local" => 'Y' + ); + $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); + unset($tmp_domain); } // endif spamfilter policy + //** If the domain name or owner has been changed, change the domain and owner in all mailbox records - if($this->oldDataRecord['domain'] != $domain || (isset($this->dataRecord['client_group_id']) && $this->oldDataRecord['sys_groupid'] != $this->dataRecord['client_group_id'])) { + if($old_domain != $domain || (isset($this->dataRecord['client_group_id']) && $this->oldDataRecord['sys_groupid'] != $this->dataRecord['client_group_id'])) { $app->uses('getconf'); $mail_config = $app->getconf->get_server_config($this->dataRecord["server_id"], 'mail'); //* Update the mailboxes - $mailusers = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE email like ?", '%@' . $this->oldDataRecord['domain']); + $mailusers = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE email like ?", '%@' . $old_domain); $sys_groupid = $app->functions->intval((isset($this->dataRecord['client_group_id']))?$this->dataRecord['client_group_id']:$this->oldDataRecord['sys_groupid']); - $tmp = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE default_group = ?", $client_group_id); + $tmp = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE default_group = ?", $sys_groupid); $client_user_id = $app->functions->intval(($tmp['userid'] > 0)?$tmp['userid']:1); if(is_array($mailusers)) { foreach($mailusers as $rec) { @@ -424,46 +483,203 @@ class page_action extends tform_actions { $maildir = str_replace("[domain]", $domain, $mail_config["maildir_path"]); $maildir = str_replace("[localpart]", $mail_parts[0], $maildir); $email = $mail_parts[0].'@'.$this->dataRecord['domain']; - $app->db->datalogUpdate('mail_user', array("maildir" => $maildir, "email" => $email, "sys_userid" => $client_user_id, "sys_groupid" => $sys_groupid), 'mailuser_id', $rec['mailuser_id']); + // update spamfilter_users and spamfilter_wblist if email change + $skip_spamfilter_users_update = false; + if($email != $rec['email']) { + $tmp_olduser = $app->db->queryOneRecord("SELECT id,fullname FROM spamfilter_users WHERE email = ?", $rec['email']); + if($tmp_olduser['id'] > 0) { + $tmp_newuser = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", $email); + if($tmp_newuser['id'] > 0) { + // There is a spamfilter_users for both old and new email, we'll update old wblist entries + $tmp_wblist = $app->db->queryAllRecords("SELECT wblist_id FROM spamfilter_wblist WHERE rid = ?", $tmp_olduser['id']); + foreach ($tmp_wblist as $tmp) { + $update_data = array( + 'rid' => $tmp_newuser['id'], + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + $app->db->datalogUpdate('spamfilter_wblist', $update_data, 'wblist_id', $tmp['wblist_id']); + } + + // now delete old spamfilter_users entry + $app->db->datalogDelete('spamfilter_users', 'id', $tmp_olduser['id']); + } else { + $update_data = array( + 'email' => $mail_parts[0].'@'.$this->dataRecord['domain'], + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + if($tmp_olduser['fullname'] == $app->functions->idn_decode($rec['email'])) { + $update_data['fullname'] = $app->functions->idn_decode($email); + } + $app->db->datalogUpdate('spamfilter_users', $update_data, 'id', $tmp_olduser['id']); + $skip_spamfilter_users_update = true; + + $tmp_wblist = $app->db->queryAllRecords("SELECT wblist_id FROM spamfilter_wblist WHERE rid = ?", $tmp_olduser['id']); + $update_data = array( + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + foreach ($tmp_wblist as $tmp) { + $app->db->datalogUpdate('spamfilter_wblist', $update_data, 'wblist_id', $tmp['wblist_id']); + } + } + } + + $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", $email); + if($tmp_user["id"] > 0) { + // There is already a record that we will update + if(!$skip_spamfilter_users_update) { + $update_data = array( + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + $app->db->datalogUpdate('spamfilter_users', $update_data, 'id', $tmp_user['id']); + } + } else { + // We create a new record + $insert_data = array( + "sys_userid" => $client_user_id, + "sys_groupid" => $sys_groupid, + "sys_perm_user" => 'riud', + "sys_perm_group" => 'riud', + "sys_perm_other" => '', + "server_id" => $this->dataRecord["server_id"], + "priority" => 5, + "policy_id" => 0, + "email" => $email, + "fullname" => $app->functions->idn_decode($email), + "local" => 'Y' + ); + $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); + } + + $app->db->datalogUpdate('mail_user', array("maildir" => $maildir, "email" => $email, "sys_userid" => $client_user_id, "sys_groupid" => $sys_groupid), 'mailuser_id', $rec['mailuser_id']); + } } } //* Update the aliases - $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source like ? OR destination like ?", '%@' . $this->oldDataRecord['domain'], '%@' . $this->oldDataRecord['domain']); + $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source like ? OR destination like ?", '%@' . $old_domain, '%@' . $old_domain); if(is_array($forwardings)) { foreach($forwardings as $rec) { - $destination = str_replace($this->oldDataRecord['domain'], $domain, $rec['destination']); - $source = str_replace($this->oldDataRecord['domain'], $domain, $rec['source']); + $destination = str_replace($old_domain, $domain, $rec['destination']); + $source = str_replace($old_domain, $domain, $rec['source']); + + // update spamfilter_users and spamfilter_wblist if source email changes + $skip_spamfilter_users_update = false; + if(strpos($rec['source'],'@'.$old_domain) && $source != $rec['source']) { + $tmp_olduser = $app->db->queryOneRecord("SELECT id,fullname FROM spamfilter_users WHERE email = ?", $rec['source']); + if($tmp_olduser['id'] > 0) { + $tmp_newuser = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", $source); + if($tmp_newuser['id'] > 0) { + // There is a spamfilter_users for both old and new email, we'll update old wblist entries + $tmp_wblist = $app->db->queryAllRecords("SELECT wblist_id FROM spamfilter_wblist WHERE rid = ?", $tmp_olduser['id']); + foreach ($tmp_wblist as $tmp) { + $update_data = array( + 'rid' => $tmp_newuser['id'], + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + $app->db->datalogUpdate('spamfilter_wblist', $update_data, 'wblist_id', $tmp['wblist_id']); + } + + // now delete old spamfilter_users entry + $app->db->datalogDelete('spamfilter_users', 'id', $tmp_olduser['id']); + } else { + $update_data = array( + 'email' => $source, + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + if($tmp_olduser['fullname'] == $app->functions->idn_decode($rec['source'])) { + $update_data['fullname'] = $app->functions->idn_decode($source); + } + $app->db->datalogUpdate('spamfilter_users', $update_data, 'id', $tmp_olduser['id']); + $skip_spamfilter_users_update = true; + + $tmp_wblist = $app->db->queryAllRecords("SELECT wblist_id FROM spamfilter_wblist WHERE rid = ?", $tmp_olduser['id']); + $update_data = array( + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + foreach ($tmp_wblist as $tmp) { + $app->db->datalogUpdate('spamfilter_wblist', $update_data, 'wblist_id', $tmp['wblist_id']); + } + } + } + + + $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", $source); + if($tmp_user["id"] > 0) { + // There is already a record that we will update + if(!$skip_spamfilter_users_update) { + $update_data = array( + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + ); + $app->db->datalogUpdate('spamfilter_users', $update_data, 'id', $tmp_user['id']); + } + /* + * should we insert spamfilter_users with policy_id = 0 for mail_forwardings? + * I think no (see https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6201) + * + } else { + // We create a new record + $insert_data = array( + "sys_userid" => $client_user_id, + "sys_groupid" => $sys_groupid, + "sys_perm_user" => 'riud', + "sys_perm_group" => 'riud', + "sys_perm_other" => '', + "server_id" => $this->dataRecord["server_id"], + "priority" => 5, + "policy_id" => 0, + "email" => $source, + "fullname" => $app->functions->idn_decode($source), + "local" => 'Y' + ); + $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); + */ + } + + } + $app->db->datalogUpdate('mail_forwarding', array("source" => $source, "destination" => $destination, "sys_userid" => $client_user_id, "sys_groupid" => $sys_groupid), 'forwarding_id', $rec['forwarding_id']); } } //* Update the mailinglist - $app->db->query("UPDATE mail_mailinglist SET sys_userid = ?, sys_groupid = ? WHERE domain = ?", $client_user_id, $sys_groupid, $this->oldDataRecord['domain']); - + $mailinglists = $app->db->queryAllRecords("SELECT * FROM mail_mailinglist WHERE domain = ?", $old_domain); + if(is_array($mailinglists)) { + foreach($mailinglists as $rec) { + $update_data = array( + 'sys_userid' => $client_user_id, + 'sys_groupid' => $sys_groupid, + 'domain' => $domain, + 'email' => str_replace($old_domain, $domain, $rec['email']), + ); + $app->db->datalogUpdate('mail_mailinglist', $update_data, 'mailinglist_id', $rec['mailinglist_id']); + } + } + //* Update fetchmail accounts - $fetchmail = $app->db->queryAllRecords("SELECT * FROM mail_get WHERE destination like ?", '%@' . $this->oldDataRecord['domain']); + $fetchmail = $app->db->queryAllRecords("SELECT * FROM mail_get WHERE destination like ?", '%@' . $old_domain); if(is_array($fetchmail)) { foreach($fetchmail as $rec) { - $destination = str_replace($this->oldDataRecord['domain'], $domain, $rec['destination']); + $destination = str_replace($old_domain, $domain, $rec['destination']); $app->db->datalogUpdate('mail_get', array("destination" => $destination, "sys_userid" => $client_user_id, "sys_groupid" => $sys_groupid), 'mailget_id', $rec['mailget_id']); } } - - //* Delete the old spamfilter record - $tmp = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", '@' . $this->oldDataRecord["domain"]); - $app->db->datalogDelete('spamfilter_users', 'id', $tmp["id"]); - unset($tmp); - } // end if domain name changed //* update dns-record when the dkim record was changed // NOTE: only if the domain-name was not changed if ( $this->dataRecord['active'] == 'y' && $domain == $this->oldDataRecord['domain'] ) { - $dkim_active = @($this->dataRecord['dkim'] == 'y') ? true : false; + $dkim_active = @($this->dataRecord['dkim'] == 'y') ? true : false; $selector = @($this->dataRecord['dkim_selector'] != $this->oldDataRecord['dkim_selector']) ? true : false; $dkim_private = @($this->dataRecord['dkim_private'] != $this->oldDataRecord['dkim_private']) ? true : false; - + $soaDomain = $domain.'.'; while ((!isset($soa) && (substr_count($soaDomain,'.') > 1))) { $soa = $app->db->queryOneRecord("SELECT id AS zone, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, server_id, ttl, serial FROM dns_soa WHERE active = 'Y' AND origin = ?", $soaDomain); @@ -486,7 +702,7 @@ class page_action extends tform_actions { $soa_id = $app->functions->intval($soa['zone']); $serial = $app->validate_dns->increase_serial($soa["serial"]); $app->db->datalogUpdate('dns_soa', array("serial" => $serial), 'id', $soa_id); - } + } } } @@ -503,8 +719,8 @@ class page_action extends tform_actions { $app->db->datalogDelete('dns_rr', 'id', $r['id']); } } - - // also delete a dsn-records with same selector + + // also delete a dsn-records with same selector $sql = "SELECT * from dns_rr WHERE name ? AND data LIKE 'v=DKIM1%' AND " . $app->tform->getAuthSQL('r'); $rec = $app->db->queryAllRecords($sql, '._domainkey.'.$dataRecord['dkim_selector'].'.', $dataRecord['domain']); if (is_array($rec)) @@ -528,4 +744,3 @@ class page_action extends tform_actions { $page = new page_action; $page->onLoad(); -?> diff --git a/interface/web/mail/mail_user_del.php b/interface/web/mail/mail_user_del.php index dc92047331952f097b8e80327102c71ca8a036d0..d301f5008573892c5c5527907d10de9dbaa1b44d 100644 --- a/interface/web/mail/mail_user_del.php +++ b/interface/web/mail/mail_user_del.php @@ -55,8 +55,18 @@ class page_action extends tform_actions { global $app; $conf; $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", $this->dataRecord["email"]); + if (is_array($tmp_user) && isset($tmp_user['id'])) { + $tmp_wblists = $app->db->queryAllRecords("SELECT wblist_id FROM spamfilter_wblist WHERE rid = ?", $tmp_user['id']); + if(is_array($tmp_wblists)) { + foreach($tmp_wblists as $tmp) { + $app->db->datalogDelete('spamfilter_wblist', 'wblist_id', $tmp['wblist_id']); + } + } + } $app->db->datalogDelete('spamfilter_users', 'id', $tmp_user["id"]); + // delete mail_forwardings with destination == email ? + $tmp_filters = $app->db->queryAllRecords("SELECT filter_id FROM mail_user_filter WHERE mailuser_id = ?", $this->id); if(is_array($tmp_filters)) { foreach($tmp_filters as $tmp) { @@ -71,4 +81,3 @@ class page_action extends tform_actions { $page = new page_action; $page->onDelete(); -?> diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index 1dca1db848b93ff78ce9f8c2a9c143579bdf98f7..d8730fa2ebe78c3885af10f785a276e016b7ecfe 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -94,20 +94,20 @@ class page_action extends tform_actions { unset($domains); unset($domain_select); - // Get the spamfilter policys for the user + // Get the spamfilter policies for the user $tmp_user = $app->db->queryOneRecord("SELECT policy_id FROM spamfilter_users WHERE email = ?", $this->dataRecord["email"]); if (isset($_POST['policy'])) $tmp_user['policy_id'] = intval($_POST['policy']); $sql = "SELECT id, policy_name FROM spamfilter_policy WHERE ".$app->tform->getAuthSQL('r') . " ORDER BY policy_name"; - $policys = $app->db->queryAllRecords($sql); - $policy_select = "<option value='0'>".$app->tform->lng("inherit_policy")."</option>"; - if(is_array($policys)) { - foreach( $policys as $p) { + $policies = $app->db->queryAllRecords($sql); + $policy_select = "<option value='0'".(($tmp_user['policy_id'] == 0) ? " SELECTED>":">").$app->tform->lng("inherit_policy")."</option>"; + if(is_array($policies)) { + foreach( $policies as $p) { $selected = ($p["id"] == $tmp_user["policy_id"])?'SELECTED':''; $policy_select .= "<option value='$p[id]' $selected>" . $app->functions->htmlentities($p['policy_name']) . "</option>\r\n"; } } $app->tpl->setVar("policy", $policy_select); - unset($policys); + unset($policies); unset($policy_select); unset($tmp_user); @@ -281,42 +281,40 @@ class page_action extends tform_actions { // Spamfilter policy $policy_id = $app->functions->intval($this->dataRecord["policy"]); - if($policy_id > 0) { - $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", $this->dataRecord["email"]); - if($tmp_user["id"] > 0) { - // There is already a record that we will update + $tmp_user = $app->db->queryOneRecord("SELECT id, policy_id FROM spamfilter_users WHERE email = ?", $this->dataRecord["email"]); + if($tmp_user["id"] > 0) { + // There is already a record that we will update + if($policy_id != $tmp_user['policy_id']) { $app->db->datalogUpdate('spamfilter_users', array("policy_id" => $policy_id), 'id', $tmp_user["id"]); - } else { - // We create a new record - $insert_data = array( - "sys_userid" => $_SESSION["s"]["user"]["userid"], - "sys_groupid" => $domain["sys_groupid"], - "sys_perm_user" => 'riud', - "sys_perm_group" => 'riud', - "sys_perm_other" => '', - "server_id" => $domain["server_id"], - "priority" => 10, - "policy_id" => $policy_id, - "email" => $this->dataRecord["email"], - "fullname" => $app->functions->idn_decode($this->dataRecord["email"]), - "local" => 'Y' - ); - $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); } - } // endif spamfilter policy + } else { + // We create a new record + $insert_data = array( + "sys_userid" => $_SESSION["s"]["user"]["userid"], + "sys_groupid" => $domain["sys_groupid"], + "sys_perm_user" => 'riud', + "sys_perm_group" => 'riud', + "sys_perm_other" => '', + "server_id" => $domain["server_id"], + "priority" => 7, + "policy_id" => $policy_id, + "email" => $this->dataRecord["email"], + "fullname" => $app->functions->idn_decode($this->dataRecord["email"]), + "local" => 'Y' + ); + $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); + } // Set the fields for dovecot - if(isset($this->dataRecord["email"])) { - $disableimap = ($this->dataRecord["disableimap"])?'y':'n'; - $disablepop3 = ($this->dataRecord["disablepop3"])?'y':'n'; - $disablesmtp = ($this->dataRecord["disablesmtp"])?'y':'n'; - $disabledeliver = ($this->dataRecord["disabledeliver"])?'y':'n'; - - $app->db->query($sql, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $this->id); - $sql = "UPDATE mail_user SET disableimap = ?, disablesieve = ?, disablepop3 = ?, disablesmtp = ?, disabledeliver = ?, disablelda = ?, disablelmtp = ? WHERE mailuser_id = ?"; - $app->db->query($sql, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $disabledeliver, $this->id); - } + $disableimap = ($this->dataRecord["disableimap"])?'y':'n'; + $disablepop3 = ($this->dataRecord["disablepop3"])?'y':'n'; + $disablesmtp = ($this->dataRecord["disablesmtp"])?'y':'n'; + $disabledeliver = ($this->dataRecord["disabledeliver"])?'y':'n'; + + $app->db->query($sql, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $this->id); + $sql = "UPDATE mail_user SET disableimap = ?, disablesieve = ?, disablepop3 = ?, disablesmtp = ?, disabledeliver = ?, disablelda = ?, disablelmtp = ? WHERE mailuser_id = ?"; + $app->db->query($sql, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $disabledeliver, $this->id); } function onAfterUpdate() { @@ -326,65 +324,104 @@ class page_action extends tform_actions { if(isset($_POST["email_domain"])) { $domain = $app->db->queryOneRecord("SELECT sys_groupid, server_id FROM mail_domain WHERE domain = ? AND ".$app->tform->getAuthSQL('r'), $app->functions->idn_encode($_POST["email_domain"])); $app->db->query("UPDATE mail_user SET sys_groupid = ? WHERE mailuser_id = ?", $domain["sys_groupid"], $this->id); - - // Spamfilter policy - $policy_id = $app->functions->intval($this->dataRecord["policy"]); - $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", $this->dataRecord["email"]); - if($policy_id > 0) { - if($tmp_user["id"] > 0) { - // There is already a record that we will update - $app->db->datalogUpdate('spamfilter_users', array("policy_id" => $policy_id), 'id', $tmp_user["id"]); - } else { - // We create a new record - $insert_data = array( - "sys_userid" => $_SESSION["s"]["user"]["userid"], - "sys_groupid" => $domain["sys_groupid"], - "sys_perm_user" => 'riud', - "sys_perm_group" => 'riud', - "sys_perm_other" => '', - "server_id" => $domain["server_id"], - "priority" => 10, - "policy_id" => $policy_id, - "email" => $this->dataRecord["email"], - "fullname" => $app->functions->idn_decode($this->dataRecord["email"]), - "local" => 'Y' - ); - $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); - } - }else { - if($tmp_user["id"] > 0) { - // There is already a record but the user shall have no policy, so we delete it - $app->db->datalogDelete('spamfilter_users', 'id', $tmp_user["id"]); - } - } // endif spamfilter policy } // Set the fields for dovecot - if(isset($this->dataRecord["email"])) { - $disableimap = (isset($this->dataRecord["disableimap"]) && $this->dataRecord["disableimap"])?'y':'n'; - $disablepop3 = (isset($this->dataRecord["disablepop3"]) && $this->dataRecord["disablepop3"])?'y':'n'; - $disablesmtp = (isset($this->dataRecord["disablesmtp"]) && $this->dataRecord["disablesmtp"])?'y':'n'; - $disabledeliver = (isset($this->dataRecord["disabledeliver"]) && $this->dataRecord["disabledeliver"])?'y':'n'; - - $sql = "UPDATE mail_user SET disableimap = ?, disablesieve = ?, `disablesieve-filter` = ?, disablepop3 = ?, disablesmtp = ?, disabledeliver = ?, disablelda = ?, disablelmtp = ? WHERE mailuser_id = ?"; - $app->db->query($sql, $disableimap, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $disabledeliver, $this->id); - } + $disableimap = (isset($this->dataRecord["disableimap"]) && $this->dataRecord["disableimap"])?'y':'n'; + $disablepop3 = (isset($this->dataRecord["disablepop3"]) && $this->dataRecord["disablepop3"])?'y':'n'; + $disablesmtp = (isset($this->dataRecord["disablesmtp"]) && $this->dataRecord["disablesmtp"])?'y':'n'; + $disabledeliver = (isset($this->dataRecord["disabledeliver"]) && $this->dataRecord["disabledeliver"])?'y':'n'; + + $sql = "UPDATE mail_user SET disableimap = ?, disablesieve = ?, `disablesieve-filter` = ?, disablepop3 = ?, disablesmtp = ?, disabledeliver = ?, disablelda = ?, disablelmtp = ? WHERE mailuser_id = ?"; + $app->db->query($sql, $disableimap, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $disabledeliver, $this->id); + + // Spamfilter policy + $policy_id = $app->functions->intval($this->dataRecord["policy"]); + $skip_spamfilter_users_update = false; - //** If the email address has been changed, change it in all aliases too + //** Handle email address change if(isset($this->dataRecord['email']) && $this->oldDataRecord['email'] != $this->dataRecord['email']) { - //if($this->oldDataRecord['email'] != $this->dataRecord['email']) { + //** Update spamfilter_users and spamfilter_wblist + $tmp_olduser = $app->db->queryOneRecord("SELECT id,fullname FROM spamfilter_users WHERE email = ?", $this->oldDataRecord['email']); + if($tmp_olduser["id"] > 0) { + $tmp_newuser = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", $this->dataRecord['email']); + if($tmp_newuser['id'] > 0) { + // There is a spamfilter_users for both old and new email, we'll update old wblist entries + $update_data = array( + 'rid' => $tmp_newuser['id'], + ); + if (isset($domain['sys_groupid'])) { + $update_data['sys_groupid'] = $domain['sys_groupid']; + } + $tmp_wblist = $app->db->queryAllRecords("SELECT wblist_id FROM spamfilter_wblist WHERE rid = ?", $tmp_olduser['id']); + foreach ($tmp_wblist as $tmp) { + $app->db->datalogUpdate('spamfilter_wblist', $update_data, 'wblist_id', $tmp['wblist_id']); + } + + // now delete old spamfilter_users entry + $app->db->datalogDelete('spamfilter_users', 'id', $tmp_olduser['id']); + + // we update spamfilter_users for new id below + } else { + $update_data = array( + 'email' => $this->dataRecord['email'], + 'policy_id' => $policy_id, + ); + if (isset($domain['sys_groupid'])) { + $update_data['sys_groupid'] = $domain['sys_groupid']; + } + if($tmp_olduser['fullname'] == $app->functions->idn_decode($this->oldDataRecord['email'])) { + $update_data['fullname'] = $app->functions->idn_decode($this->dataRecord['email']); + } + $app->db->datalogUpdate('spamfilter_users', $update_data, 'id', $tmp_olduser['id']); + $skip_spamfilter_users_update = true; + } + } //* Update the aliases $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE destination = ?", $this->oldDataRecord['email']); if(is_array($forwardings)) { foreach($forwardings as $rec) { $destination = $this->dataRecord['email']; - $app->db->datalogUpdate('mail_forwarding', array("destination" => $destination), 'forwarding_id', $rec['forwarding_id']); + $update_data = array( + 'destination' => $destination, + ); + $app->db->datalogUpdate('mail_forwarding', $update_data, 'forwarding_id', $rec['forwarding_id']); } } } // end if email addess changed + $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", $this->dataRecord['email']); + if($tmp_user["id"] > 0) { + // There is already a record that we will update + if(!$skip_spamfilter_users_update) { + $update_data = array( + 'policy_id' => $policy_id, + ); + if (isset($domain['sys_groupid'])) { + $update_data['sys_groupid'] = $domain['sys_groupid']; + } + $app->db->datalogUpdate('spamfilter_users', $update_data, 'id', $tmp_user['id']); + } + } else { + // We create a new record + $insert_data = array( + "sys_userid" => $_SESSION["s"]["user"]["userid"], + "sys_groupid" => $domain["sys_groupid"], + "sys_perm_user" => 'riud', + "sys_perm_group" => 'riud', + "sys_perm_other" => '', + "server_id" => $domain["server_id"], + "priority" => 7, + "policy_id" => $policy_id, + "email" => $this->dataRecord["email"], + "fullname" => $app->functions->idn_decode($this->dataRecord["email"]), + "local" => 'Y' + ); + $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); + } + //* Change backup options when user mail backup options have been changed if(isset($this->dataRecord['backup_interval']) && ($this->dataRecord['backup_interval'] != $this->oldDataRecord['backup_interval'] || $this->dataRecord['backup_copies'] != $this->oldDataRecord['backup_copies'])) { $backup_interval = $this->dataRecord['backup_interval']; @@ -401,4 +438,3 @@ class page_action extends tform_actions { $app->tform_actions = new page_action; $app->tform_actions->onLoad(); -?> diff --git a/interface/web/mail/mail_whitelist_del.php b/interface/web/mail/mail_whitelist_del.php index 06ce88550bcef2a2e00d674759ddf310842bba3a..94be228f67035481bbfc4dd24057b325ce8a8445 100644 --- a/interface/web/mail/mail_whitelist_del.php +++ b/interface/web/mail/mail_whitelist_del.php @@ -42,8 +42,6 @@ $tform_def_file = "form/mail_whitelist.tform.php"; require_once '../../lib/config.inc.php'; require_once '../../lib/app.inc.php'; -if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin privileges'); - //* Check permissions for module $app->auth->check_module_permissions('mail'); diff --git a/interface/web/mail/mail_whitelist_edit.php b/interface/web/mail/mail_whitelist_edit.php index 35fa825ec78cbdb8d237594cd276ae94ce9199b2..81a5d1527439a111f7cf500e6ec366de75f49633 100644 --- a/interface/web/mail/mail_whitelist_edit.php +++ b/interface/web/mail/mail_whitelist_edit.php @@ -50,21 +50,27 @@ $app->load('tform_actions'); class page_action extends tform_actions { + protected $client_allowed_types = array( 'recipient', 'sender' ); + function onShowNew() { - global $app, $conf; + global $app; + + if($_SESSION["s"]["user"]["typ"] != 'admin') { + if(!$app->tform->checkClientLimit('limit_mail_wblist')) { + $app->error($app->tform->wordbook["limit_mail_wblist_txt"]); + } + if(!$app->tform->checkResellerLimit('limit_mail_wblist')) { + $app->error('Reseller: '.$app->tform->wordbook["limit_mail_wblist_txt"]); + } + } - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); - parent::onShowNew(); } function onBeforeUpdate() { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); - //* Check if the server has been changed - // We do this only for the admin or reseller users, as normal clients can not change the server ID anyway $rec = $app->db->queryOneRecord("SELECT server_id from mail_access WHERE access_id = ?", $this->id); if($rec['server_id'] != $this->dataRecord["server_id"]) { //* Add a error message and switch back to old server @@ -77,10 +83,49 @@ class page_action extends tform_actions { function onSubmit() { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); + // Non-admin checks + if($_SESSION["s"]["user"]["typ"] != 'admin') { + // Non-admin can only use type 'sender' or 'recipient' + if(! in_array($this->dataRecord["type"], $this->client_allowed_types)) { + $app->tform->errorMessage .= $app->lng('Whitelist type requires admin permissions'); + } + + // Address must be valid email + if(! filter_var( $this->dataRecord["source"], FILTER_VALIDATE_EMAIL )) { + $app->tform->errorMessage .= $app->lng('Invalid address: must be a valid email address'); + } + + // Address must belong to the client's domains + $tmp = explode('@', $this->dataRecord["source"]); + $domain = trim( array_pop($tmp) ); + $AUTHSQL = $app->tform->getAuthSQL('r'); + $rec = $app->db->queryOneRecord("SELECT domain_id from mail_domain WHERE ${AUTHSQL} AND domain = ?", $domain); + if(! (is_array($rec) && isset($rec['domain_id']) && is_numeric($rec['domain_id']))) { + $app->tform->errorMessage .= $app->lng('Invalid address: you have no permission for this domain.'); + } + unset($rec); + + // Check the client limits + $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); + $client = $app->db->queryOneRecord("SELECT limit_mail_wblist FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); + if($this->id == 0 && $client["limit_mail_wblist"] >= 0) { + $TYPES_LIST = "('" . join("', '", $this->client_allowed_types) . "')"; + $tmp = $app->db->queryOneRecord("SELECT count(access_id) as number FROM mail_access WHERE ${AUTHSQL} AND type in ${TYPES_LIST}"); + if($tmp["number"] >= $client["limit_mail_wblist"]) { + $app->tform->errorMessage .= $app->tform->wordbook["limit_mail_wblist_txt"]."<br>"; + } + unset($tmp); + } + } if(substr($this->dataRecord['source'], 0, 1) === '@') $this->dataRecord['source'] = substr($this->dataRecord['source'], 1); + $rec = $app->db->queryOneRecord("SELECT access_id from mail_access WHERE server_id = ? AND source = ? and type = ?", $this->dataRecord["server_id"], $this->dataRecord["source"], $this->dataRecord["type"]); + if(is_array($rec) && isset($rec['access_id'])) { + $app->tform->errorMessage .= $app->tform->wordbook["mail_access_unique"]."<br>"; + } + unset($rec); + parent::onSubmit(); } @@ -89,5 +134,4 @@ class page_action extends tform_actions { $app->tform_actions = new page_action; $app->tform_actions->onLoad(); - ?> diff --git a/interface/web/mail/mail_whitelist_list.php b/interface/web/mail/mail_whitelist_list.php index 73877797b4c97e40a333427c4e606793d70e2651..4fd33dd977b0259f46c83c2f2634ff787a9f7910 100644 --- a/interface/web/mail/mail_whitelist_list.php +++ b/interface/web/mail/mail_whitelist_list.php @@ -12,8 +12,6 @@ $list_def_file = "list/mail_whitelist.list.php"; * End Form configuration ******************************************/ -if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin privileges'); - //* Check permissions for module $app->auth->check_module_permissions('mail'); diff --git a/interface/web/mail/spamfilter_blacklist_edit.php b/interface/web/mail/spamfilter_blacklist_edit.php index b76334b387728ef65e2daaa350a08ff37645d916..c304dafd2b3767ec966361c82372b5e748776c66 100644 --- a/interface/web/mail/spamfilter_blacklist_edit.php +++ b/interface/web/mail/spamfilter_blacklist_edit.php @@ -84,7 +84,7 @@ class page_action extends tform_actions { } } // end if user is not admin - // Select and set the server_id so it matches the server_id of the spa,filter_users record + // Select and set the server_id so it matches the server_id of the spamfilter_users record $tmp = $app->db->queryOneRecord("SELECT server_id FROM spamfilter_users WHERE id = ?", $this->dataRecord["rid"]); $this->dataRecord["server_id"] = $tmp["server_id"]; unset($tmp); diff --git a/interface/web/mail/spamfilter_policy_edit.php b/interface/web/mail/spamfilter_policy_edit.php index 8b15f2fac6637e167a4e266232f1cfb21b4d8c55..e8dd7f74736487f5f105cf345392a5aff2b66796 100644 --- a/interface/web/mail/spamfilter_policy_edit.php +++ b/interface/web/mail/spamfilter_policy_edit.php @@ -113,16 +113,9 @@ class page_action extends tform_actions { // check if this is an email domain if(substr($spamfilter_user['email'],0,1) == '@') { $domain = substr($spamfilter_user['email'],1); - $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source LIKE ? OR destination LIKE ?", "%@" . $domain, "%@" . $domain); - - // Force-update aliases and forwards - if(is_array($forwardings)) { - foreach($forwardings as $rec) { - $app->db->datalogUpdate('mail_forwarding', array("source" => $rec['source']), 'forwarding_id', $rec['forwarding_id'],true); - } - } - } + // Nothing special to do for a domain + } } } } diff --git a/interface/web/mail/spamfilter_users_del.php b/interface/web/mail/spamfilter_users_del.php index 0dc92935c136a0e00c3e24afad521848407cf8d8..a243803f9fc3577b2811556c292945957bde0d3e 100644 --- a/interface/web/mail/spamfilter_users_del.php +++ b/interface/web/mail/spamfilter_users_del.php @@ -45,7 +45,24 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('mail'); -$app->uses("tform_actions"); -$app->tform_actions->onDelete(); +$app->uses('tform_actions'); +$app->load('tform_actions'); + +class page_action extends tform_actions { + + function onBeforeDelete() { + global $app; $conf; + + $tmp_wblists = $app->db->queryAllRecords("SELECT wblist_id FROM spamfilter_wblist WHERE rid = ?", $this->id); + if(is_array($tmp_wblists)) { + foreach($tmp_wblists as $tmp) { + $app->db->datalogDelete('spamfilter_wblist', 'wblist_id', $tmp['wblist_id']); + } + } + } + +} + +$page = new page_action; +$page->onDelete(); -?> diff --git a/interface/web/mail/spamfilter_users_edit.php b/interface/web/mail/spamfilter_users_edit.php index b8bc9316c5fffdadff123f8bbf81ef951275e406..c06e31fc72559f1ea7ad9e4d98d37cbb7fa8236f 100644 --- a/interface/web/mail/spamfilter_users_edit.php +++ b/interface/web/mail/spamfilter_users_edit.php @@ -65,6 +65,29 @@ class page_action extends tform_actions { parent::onShowNew(); } + function onShowEnd() { + global $app, $conf; + + // Get the spamfilter policies for the user + $tmp_user = $app->db->queryOneRecord("SELECT policy_id FROM spamfilter_users WHERE email = ?", $this->dataRecord["email"]); + if (isset($_POST['policy_id'])) $tmp_user['policy_id'] = intval($_POST['policy_id']); + $sql = "SELECT id, policy_name FROM spamfilter_policy WHERE ".$app->tform->getAuthSQL('r') . " ORDER BY policy_name"; + $policies = $app->db->queryAllRecords($sql); + $policy_select = "<option value='0'".(($tmp_user['policy_id'] == 0) ? " SELECTED>":">").$app->tform->lng("inherit_policy")."</option>"; + if(is_array($policies)) { + foreach( $policies as $p) { + $selected = ($p["id"] == $tmp_user["policy_id"])?'SELECTED':''; + $policy_select .= "<option value='$p[id]' $selected>" . $app->functions->htmlentities($p['policy_name']) . "</option>\r\n"; + } + } + $app->tpl->setVar("policy_id", $policy_select); + unset($policies); + unset($policy_select); + unset($tmp_user); + + parent::onShowEnd(); + } + function onBeforeUpdate() { global $app, $conf; @@ -90,7 +113,7 @@ class page_action extends tform_actions { $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); $client = $app->db->queryOneRecord("SELECT limit_spamfilter_user FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); - // Check if the user may add another mailbox. + // Check if the user may add another spamfilter user. if($this->id == 0 && $client["limit_spamfilter_user"] >= 0) { $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM spamfilter_users WHERE sys_groupid = ?", $client_group_id); if($tmp["number"] >= $client["limit_spamfilter_user"]) { @@ -103,10 +126,21 @@ class page_action extends tform_actions { parent::onSubmit(); } + + function onAfterUpdate() { + global $app, $conf; + + // If email changes fire spamfilter_wblist_update events so rspamd files are rewritten + if(isset($this->dataRecord['email']) && $this->oldDataRecord['email'] != $this->dataRecord['email']) { + $tmp_wblist = $app->db->queryAllRecords("SELECT wblist_id FROM spamfilter_wblist WHERE rid = ?", $this->dataRecord['id']); + foreach ($tmp_wblist as $tmp) { + $app->db->datalogUpdate('spamfilter_wblist', array('rid' => $this->dataRecord['id']), 'wblist_id', $tmp['wblist_id']); + } + } + } + } $app->tform_actions = new page_action; $app->tform_actions->onLoad(); - -?> diff --git a/interface/web/mail/spamfilter_whitelist_edit.php b/interface/web/mail/spamfilter_whitelist_edit.php index a404db0ef1008c7eba45ea9a9be8d7e6951d09bd..bc161e6e554a639ec93a0e669f31cb10503c662a 100644 --- a/interface/web/mail/spamfilter_whitelist_edit.php +++ b/interface/web/mail/spamfilter_whitelist_edit.php @@ -84,7 +84,7 @@ class page_action extends tform_actions { } } // end if user is not admin - // Select and set the server_id so it matches the server_id of the spa,filter_users record + // Select and set the server_id so it matches the server_id of the spamfilter_users record $tmp = $app->db->queryOneRecord("SELECT server_id FROM spamfilter_users WHERE id = ?", $this->dataRecord["rid"]); $this->dataRecord["server_id"] = $tmp["server_id"]; unset($tmp); diff --git a/interface/web/mail/templates/mail_alias_edit.htm b/interface/web/mail/templates/mail_alias_edit.htm index 2fd149a348351667536af5e57fa0a67081524bbd..7cd50b7d6fdd66a40da9bd3d2e382f1225f5d445 100644 --- a/interface/web/mail/templates/mail_alias_edit.htm +++ b/interface/web/mail/templates/mail_alias_edit.htm @@ -17,21 +17,21 @@ </select></div> </div> <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label> + <label class="col-sm-3 control-label">{tmpl_var name='send_as_txt'}</label> <div class="col-sm-9"> - {tmpl_var name='active'} + {tmpl_var name='allow_send_as'} <small> {tmpl_var name='send_as_exp'}</small> </div> </div> <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='send_as_txt'}</label> + <label class="col-sm-3 control-label">{tmpl_var name='greylisting_txt'}</label> <div class="col-sm-9"> - {tmpl_var name='allow_send_as'} <small>{tmpl_var name='send_as_exp'}</small> + {tmpl_var name='greylisting'} </div> </div> <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='greylisting_txt'}</label> + <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label> <div class="col-sm-9"> - {tmpl_var name='greylisting'} + {tmpl_var name='active'} </div> </div> diff --git a/interface/web/mail/templates/mail_alias_list.htm b/interface/web/mail/templates/mail_alias_list.htm index f65e40a9083065969f9eb6d566740403c86ee59a..21f868dc814a20c21055ab73e8627877ebd7399e 100644 --- a/interface/web/mail/templates/mail_alias_list.htm +++ b/interface/web/mail/templates/mail_alias_list.htm @@ -53,7 +53,7 @@ <td><a href="#" data-load-content="mail/mail_alias_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source"}</a></td> <td><a href="#" data-load-content="mail/mail_alias_edit.php?id={tmpl_var name='id'}">{tmpl_var name="destination"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_alias_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_alias_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_domain_catchall_edit.htm b/interface/web/mail/templates/mail_domain_catchall_edit.htm index 8da10f1f09e00e5a8840f3c8feed993b224108d1..f42781c62f8c406748d65a2a657b6343e7b41ade 100644 --- a/interface/web/mail/templates/mail_domain_catchall_edit.htm +++ b/interface/web/mail/templates/mail_domain_catchall_edit.htm @@ -10,6 +10,12 @@ <div class="form-group"> <label for="destination" class="col-sm-3 control-label">{tmpl_var name='destination_txt'}</label> <div class="col-sm-9"><input type="text" name="destination" id="destination" value="{tmpl_var name='destination'}" class="form-control" /></div></div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='send_as_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='allow_send_as'} <small> {tmpl_var name='send_as_exp'}</small> + </div> + </div> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='greylisting_txt'}</label> <div class="col-sm-9"> diff --git a/interface/web/mail/templates/mail_domain_edit.htm b/interface/web/mail/templates/mail_domain_edit.htm index cb462c98196dac2052ffcce13d9679fdba26e6d8..3486dcfff203c803eb30337df1bb3d62f6958e85 100644 --- a/interface/web/mail/templates/mail_domain_edit.htm +++ b/interface/web/mail/templates/mail_domain_edit.htm @@ -75,6 +75,28 @@ {tmpl_var name='policy'} </select></div> </div> + <tmpl_if name="show_per_domain_relay_options"> + <tmpl_if name="limit_relayhost"> + <div class="form-group"> + <label for="relay_host" class="col-sm-3 control-label">{tmpl_var name='relayhost_txt'}</label> + <div class="col-sm-9"> + <input type="text" name="relay_host" id="relay_host" value="{tmpl_var name='relay_host'}" class="form-control" /> + </div> + </div> + <div class="form-group"> + <label for="relay_user" class="col-sm-3 control-label">{tmpl_var name='relayhost_user_txt'}</label> + <div class="col-sm-9"> + <input type="text" name="relay_user" id="relay_user" value="{tmpl_var name='relay_user'}" class="form-control" /> + </div> + </div> + <div class="form-group"> + <label for="relay_pass" class="col-sm-3 control-label">{tmpl_var name='relayhost_password_txt'}</label> + <div class="col-sm-9"> + <input type="text" name="relay_pass" id="relay_pass" value="{tmpl_var name='relay_pass'}" class="form-control" /> + </div> + </div> + </tmpl_if> + </tmpl_if> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label> <div class="col-sm-9"> @@ -113,7 +135,7 @@ </div> - + <input type="hidden" name="id" value="{tmpl_var name='id'}"> <input type="hidden" name="type" value="local"> @@ -132,11 +154,11 @@ domain_id : domain_id, dkim_public : dkim_public, dkim_selector : dkim_selector, - type : "create_dkim" + type : "create_dkim" }, function(data) { var dkim_txt = 'v=DKIM1; t=s; p=' + data['dns_record'].replace(/(\r\n|\n|\r)/gm, ""); var dns=data['dkim_selector'] + '._domainkey.' + data['domain'] + '. 3600 IN TXT ' + dkim_txt.match(new RegExp('.{1,' + '200' + '}', 'g')).map(chunk => '"' + chunk + '"').join(''); - + $("#dkim_selector").val(data.dkim_selector); $("#dkim_public").val(data.dkim_public); $("#dkim_private").val(data.dkim_private); @@ -144,5 +166,3 @@ }); }; </script> - - diff --git a/interface/web/mail/templates/mail_forward_edit.htm b/interface/web/mail/templates/mail_forward_edit.htm index 128ad4cd7507ef820cd2b092db74e3f3d2180d02..908156f31ff81abe2eeaf2725b13f7bccb993da5 100644 --- a/interface/web/mail/templates/mail_forward_edit.htm +++ b/interface/web/mail/templates/mail_forward_edit.htm @@ -15,21 +15,21 @@ <div class="col-sm-9"><textarea rows="10" cols="40" name="destination" id="destination" class="form-control">{tmpl_var name='destination'}</textarea></div> </div> <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label> + <label class="col-sm-3 control-label">{tmpl_var name='send_as_txt'}</label> <div class="col-sm-9"> - {tmpl_var name='active'} + {tmpl_var name='allow_send_as'} <small> {tmpl_var name='send_as_exp'}</small> </div> </div> <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='send_as_txt'}</label> + <label class="col-sm-3 control-label">{tmpl_var name='greylisting_txt'}</label> <div class="col-sm-9"> - {tmpl_var name='allow_send_as'} <small>{tmpl_var name='send_as_exp'}</small> + {tmpl_var name='greylisting'} </div> </div> <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='greylisting_txt'}</label> + <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label> <div class="col-sm-9"> - {tmpl_var name='greylisting'} + {tmpl_var name='active'} </div> </div> diff --git a/interface/web/mailuser/index.php b/interface/web/mailuser/index.php index c9541df2bd1919395946bcd1379cd16727cbeeb9..a6e2ae2389b151687829e8fc6024221fcd2a5666 100644 --- a/interface/web/mailuser/index.php +++ b/interface/web/mailuser/index.php @@ -28,8 +28,10 @@ if($rec['quota'] == 0) { if($rec['cc'] == '') $rec['cc'] = $wb['none_txt']; -$app->tpl->setVar($rec); +$rec['email'] = $app->functions->idn_decode($rec['email']); +$rec['login'] = $app->functions->idn_decode($rec['login']); +$app->tpl->setVar($rec); $sql2 = "SELECT * FROM server WHERE server_id = ?"; $rec2 = $app->db->queryOneRecord($sql2, $rec['server_id']); diff --git a/interface/web/mailuser/mail_user_cc_edit.php b/interface/web/mailuser/mail_user_cc_edit.php index 778be781ece87a4d7ee5f35bc715c96aafb2cc01..9a63b2d95390bc303ffb294d507693c62a7dceb6 100644 --- a/interface/web/mailuser/mail_user_cc_edit.php +++ b/interface/web/mailuser/mail_user_cc_edit.php @@ -75,7 +75,7 @@ class page_action extends tform_actions { global $app, $conf; $rec = $app->tform->getDataRecord($this->id); - $app->tpl->setVar("email", $rec['email'], true); + $app->tpl->setVar("email", $app->functions->idn_decode($rec['email']), true); parent::onShowEnd(); } diff --git a/interface/web/mailuser/mail_user_password_edit.php b/interface/web/mailuser/mail_user_password_edit.php index 5c5706177a6b2d0fa41b7a9edd386546764ed688..10a8e75e7efbb2c6c12be8ff76934c5cbb83862d 100644 --- a/interface/web/mailuser/mail_user_password_edit.php +++ b/interface/web/mailuser/mail_user_password_edit.php @@ -63,7 +63,7 @@ class page_action extends tform_actions { global $app, $conf; $rec = $app->tform->getDataRecord($_SESSION['s']['user']['mailuser_id']); - $app->tpl->setVar("email", $rec['email'], true); + $app->tpl->setVar("email", $app->functions->idn_decode($rec['email']), true); parent::onShowEnd(); } diff --git a/interface/web/mailuser/mail_user_spamfilter_edit.php b/interface/web/mailuser/mail_user_spamfilter_edit.php index 75649b5a707f3b89e5c4606d7019bc84c967bf0f..2c8759b7954de6304b02a97e45c2dc7e3f450ad9 100644 --- a/interface/web/mailuser/mail_user_spamfilter_edit.php +++ b/interface/web/mailuser/mail_user_spamfilter_edit.php @@ -79,32 +79,25 @@ class page_action extends tform_actions { // Spamfilter policy $policy_id = $app->functions->intval($this->dataRecord["policy"]); $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", $rec["email"]); - if($policy_id > 0) { - if($tmp_user["id"] > 0) { - // There is already a record that we will update - $app->db->datalogUpdate('spamfilter_users', array("policy_id" => $policy_id), 'id', $tmp_user["id"]); - } else { - // We create a new record - $insert_data = array( - "sys_userid" => $domain["sys_userid"], - "sys_groupid" => $domain["sys_groupid"], - "sys_perm_user" => 'riud', - "sys_perm_group" => 'riud', - "sys_perm_other" => '', - "server_id" => $domain["server_id"], - "priority" => 10, - "policy_id" => $policy_id, - "email" => $rec["email"], - "fullname" => $rec["email"], - "local" => 'Y' - ); - $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); - } - }else { - if($tmp_user["id"] > 0) { - // There is already a record but the user shall have no policy, so we delete it - $app->db->datalogDelete('spamfilter_users', 'id', $tmp_user["id"]); - } + if($tmp_user["id"] > 0) { + // There is already a record that we will update + $app->db->datalogUpdate('spamfilter_users', array("policy_id" => $policy_id), 'id', $tmp_user["id"]); + } else { + // We create a new record + $insert_data = array( + "sys_userid" => $domain["sys_userid"], + "sys_groupid" => $domain["sys_groupid"], + "sys_perm_user" => 'riud', + "sys_perm_group" => 'riud', + "sys_perm_other" => '', + "server_id" => $domain["server_id"], + "priority" => 7, + "policy_id" => $policy_id, + "email" => $rec["email"], + "fullname" => $rec["email"], + "local" => 'Y' + ); + $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); } // endif spamfilter policy } @@ -112,28 +105,27 @@ class page_action extends tform_actions { global $app, $conf; $rec = $app->tform->getDataRecord($this->id); - $app->tpl->setVar("email", $rec['email'], true); + $app->tpl->setVar("email", $app->functions->idn_decode($rec['email']), true); - // Get the spamfilter policys for the user + // Get the spamfilter policies for the user $tmp_user = $app->db->queryOneRecord("SELECT policy_id FROM spamfilter_users WHERE email = ?", $rec['email']); $sql = "SELECT id, policy_name FROM spamfilter_policy WHERE ".$app->tform->getAuthSQL('r'); - $policys = $app->db->queryAllRecords($sql); - $policy_select = "<option value='0'>".$app->tform->lng("inherit_policy")."</option>"; - if(is_array($policys)) { - foreach( $policys as $p) { + $policies = $app->db->queryAllRecords($sql); + $policy_select = "<option value='0'".(($tmp_user['policy_id'] == 0)?" SELECTED>":">").$app->tform->lng("inherit_policy")."</option>"; + if(is_array($policies)) { + foreach( $policies as $p) { $selected = ($p["id"] == $tmp_user["policy_id"])?'SELECTED':''; $policy_select .= "<option value='$p[id]' $selected>" . $app->functions->htmlentities($p['policy_name']) . "</option>\r\n"; } } $app->tpl->setVar("policy", $policy_select); - unset($policys); + unset($policies); unset($policy_select); unset($tmp_user); parent::onShowEnd(); } - } $app->tform_actions = new page_action; diff --git a/interface/web/sites/ajax_get_ip.php b/interface/web/sites/ajax_get_ip.php index 36127caf2dc2e390bb4d09b1e0f46d9a7eae8dd1..986fd8d33520fc6d7bc4d22ff72e7502889ef67b 100644 --- a/interface/web/sites/ajax_get_ip.php +++ b/interface/web/sites/ajax_get_ip.php @@ -45,7 +45,7 @@ $ip_type = $_GET['ip_type']; $web_config = $app->getconf->get_server_config($server_id, 'web'); $tmp = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE groupid = ?", $client_group_id); - $sql = "SELECT ip_address FROM server_ip WHERE ip_type = ? AND server_id = ? AND (client_id = 0 OR client_id=?)"; + $sql = "SELECT ip_address FROM server_ip WHERE ip_type = ? AND server_id = ? AND virtualhost = 'y' AND (client_id = 0 OR client_id=?)"; $ips = $app->db->queryAllRecords($sql, $ip_type, $server_id, $tmp['client_id']); // $ip_select = "<option value=''></option>"; diff --git a/interface/web/sites/lib/module.conf.php b/interface/web/sites/lib/module.conf.php index 5f1a25a449200bd564056d8447831b39d7b028f5..80a034819cf54139e4555389a0f9f6c67193daeb 100644 --- a/interface/web/sites/lib/module.conf.php +++ b/interface/web/sites/lib/module.conf.php @@ -198,11 +198,12 @@ $items[] = array( 'title' => 'Web traffic', 'link' => 'sites/web_sites_stats.php', 'html_id' => 'websites_stats'); -$items[] = array( 'title' => 'FTP traffic', - 'target' => 'content', - 'link' => 'sites/ftp_sites_stats.php', - 'html_id' => 'ftpsites_stats'); - +if($app->auth->get_client_limit($userid, 'ftp_user') != 0) { + $items[] = array( 'title' => 'FTP traffic', + 'target' => 'content', + 'link' => 'sites/ftp_sites_stats.php', + 'html_id' => 'ftpsites_stats'); +} $items[] = array( 'title' => 'Website quota (Harddisk)', 'target' => 'content', 'link' => 'sites/user_quota_stats.php', diff --git a/interface/web/sites/templates/web_vhost_domain_redirect.htm b/interface/web/sites/templates/web_vhost_domain_redirect.htm index 597b427a4a0a2b029fab54620e5af57253a28772..b21f297f2001cd899222e9d5fd923355a092b190 100644 --- a/interface/web/sites/templates/web_vhost_domain_redirect.htm +++ b/interface/web/sites/templates/web_vhost_domain_redirect.htm @@ -86,7 +86,7 @@ jQuery('#redirect_type option[value="redirect"]').hide(); jQuery('#redirect_type option[value="permanent"]').hide(); //jQuery('#redirect_type option[value="proxy"]').hide(); - if(selected != "no" && selected != "" && selected != "R" && selected != "L" && selected != "R,L" && selected != "R=301,L") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected'); + if(selected != "no" && selected != "" && selected != "R" && selected != "L" && selected != "R,L" && selected != "R=301,L" && selected != "proxy") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected'); jQuery('.nginx').hide(); } }); diff --git a/interface/web/themes/default/assets/stylesheets/ispconfig.css b/interface/web/themes/default/assets/stylesheets/ispconfig.css index 9d44048e82843cf8fbe5b4fd36e8c2adf9d06adc..c53b9886320465cdb4e38e28709a6d9d6c07f6ff 100644 --- a/interface/web/themes/default/assets/stylesheets/ispconfig.css +++ b/interface/web/themes/default/assets/stylesheets/ispconfig.css @@ -802,6 +802,12 @@ input[type="password"].form-control[readonly] { .systemmonitor-state.state-info .statusMsg { display: none; } +.systemmonitor-state .online { + color: green; +} +.systemmonitor-state .offline { + color: red; +} span.notification_text { display: block; diff --git a/interface/web/tools/resync.php b/interface/web/tools/resync.php index ec947421b7bea0044291e94fedb69e3ae82bbd93..0aa6677ac3497d92b95f77377d0243428dbadba7 100644 --- a/interface/web/tools/resync.php +++ b/interface/web/tools/resync.php @@ -93,34 +93,34 @@ class page_action extends tform_actions { if($type == 'mail') { $server_data = array ( - 'mail_domain' => array ( - 'index_field' => 'domain_id', - 'server_type' => 'mail', + 'mail_domain' => array ( + 'index_field' => 'domain_id', + 'server_type' => 'mail', 'server_id' => $server_id, - ), + ), 'mail_get' => array ( 'index_field' => 'mailget_id', 'server_type' => 'mail', 'server_id' => $server_id, ), - 'mail_mailinglist' => array ( - 'index_field' => 'mailinglist_id', - 'server_type' => 'mail', + 'mail_mailinglist' => array ( + 'index_field' => 'mailinglist_id', + 'server_type' => 'mail', 'server_id' => $server_id, - ), - 'mail_user' => array ( - 'index_field' => 'mailuser_id', - 'server_type' => 'mail', + ), + 'mail_user' => array ( + 'index_field' => 'mailuser_id', + 'server_type' => 'mail', 'server_id' => $server_id, ), - 'mail_transport' => array ( - 'index_field' => 'transport_id', - 'server_type' => 'mail', + 'mail_transport' => array ( + 'index_field' => 'transport_id', + 'server_type' => 'mail', 'server_id' => $server_id, ), - 'mail_relay' => array ( - 'index_field' => 'relay_recipient_id', - 'server_type' => 'mail', + 'mail_relay' => array ( + 'index_field' => 'relay_recipient_id', + 'server_type' => 'mail', 'server_id' => $server_id, ), ); @@ -129,17 +129,17 @@ class page_action extends tform_actions { $server_data = array ( 'mail_access' => array ( 'index_field' => 'access_id', - 'server_type' => 'mail', + 'server_type' => 'mail', 'server_id' => $server_id, - ), + ), 'mail_content_filter' => array ( 'index_field' => 'content_filter_id', - 'server_type' => 'mail', - ), + 'server_type' => 'mail', + ), 'mail_user_filter' => array ( 'index_field' => 'filter_id', - 'server_type' => 'mail', - ), + 'server_type' => 'mail', + ), 'spamfilter_policy' => array ( 'index_field' => 'id', 'server_type' => 'mail', @@ -158,26 +158,26 @@ class page_action extends tform_actions { } if($type == 'web' ) { $server_data = array ( - 'web_domain' => array ( - 'index_field' => 'domain_id', - 'server_type' => 'web', + 'web_domain' => array ( + 'index_field' => 'domain_id', + 'server_type' => 'web', 'server_id' => $server_id, - ), - 'shell_user' => array ( - 'index_field' => 'shell_user_id', - 'server_type' => 'web', + ), + 'shell_user' => array ( + 'index_field' => 'shell_user_id', + 'server_type' => 'web', 'server_id' => $server_id, - ), - 'cron' => array ( - 'index_field' => 'id', - 'server_type' => 'cron', + ), + 'cron' => array ( + 'index_field' => 'id', + 'server_type' => 'cron', 'server_id' => $server_id, - ), - 'ftp_user' => array ( - 'index_field' => 'ftp_user_id', - 'server_type' => 'web', + ), + 'ftp_user' => array ( + 'index_field' => 'ftp_user_id', + 'server_type' => 'web', 'server_id' => $server_id, - ), + ), ); } if($type == 'dns' ) { @@ -191,11 +191,11 @@ class page_action extends tform_actions { } if($type == 'file' ) { $server_data = array ( - 'webdav_user' => array ( - 'index_field' => 'webdav_user_id', - 'server_type' => 'file', + 'webdav_user' => array ( + 'index_field' => 'webdav_user_id', + 'server_type' => 'file', 'server_id' => $server_id, - ), + ), ); } if($type == 'db' ) { diff --git a/remoting_client/API-docs/client_add.html b/remoting_client/API-docs/client_add.html index 0e9e9cd9c61eb45e21208d43d76d82a57186ae2a..a9390900e61f6d01221ba460a3847dfc45be888a 100644 --- a/remoting_client/API-docs/client_add.html +++ b/remoting_client/API-docs/client_add.html @@ -43,6 +43,7 @@ <p class="margin"> limit_mailforward (<span class="paratype">int(11)</span>)</p> <p class="margin"> limit_mailcatchall (<span class="paratype">int(11)</span>)</p> <p class="margin"> limit_mailrouting (<span class="paratype">int(11)</span>)</p> +<p class="margin"> limit_mail_wblist (<span class="paratype">int(11)</span>)</p> <p class="margin"> limit_mailfilter (<span class="paratype">int(11)</span>)</p> <p class="margin"> limit_fetchmail (<span class="paratype">int(11)</span>)</p> <p class="margin"> limit_mailquota (<span class="paratype">int(11)</span>)</p> diff --git a/remoting_client/API-docs/client_update.html b/remoting_client/API-docs/client_update.html index 9cbdcd2f332e1b606e3eb8ab5b861a9a0b25b0a3..b38ecb8a671344869b562906fc0c168c1a605e57 100644 --- a/remoting_client/API-docs/client_update.html +++ b/remoting_client/API-docs/client_update.html @@ -43,6 +43,7 @@ <p class="margin"> limit_mailforward (<span class="paratype">int(11)</span>)</p> <p class="margin"> limit_mailcatchall (<span class="paratype">int(11)</span>)</p> <p class="margin"> limit_mailrouting (<span class="paratype">int(11)</span>)</p> +<p class="margin"> limit_mail_wblist (<span class="paratype">int(11)</span>)</p> <p class="margin"> limit_mailfilter (<span class="paratype">int(11)</span>)</p> <p class="margin"> limit_fetchmail (<span class="paratype">int(11)</span>)</p> <p class="margin"> limit_mailquota (<span class="paratype">int(11)</span>)</p> diff --git a/remoting_client/examples/client_add.php b/remoting_client/examples/client_add.php index 6d5b5934d76cfc827e6c209b708ffe09106061ca..7be7493e9408e631af9595cdd33cbce977622bfd 100644 --- a/remoting_client/examples/client_add.php +++ b/remoting_client/examples/client_add.php @@ -41,6 +41,7 @@ try { 'limit_mailforward' => -1, 'limit_mailcatchall' => -1, 'limit_mailrouting' => 0, + 'limit_mail_wblist' => 0, 'limit_mailfilter' => -1, 'limit_fetchmail' => -1, 'limit_mailquota' => -1, diff --git a/security/README.txt b/security/README.txt index b42cbaabb4adb2c698506c7c7abb1ecd22debc52..1825b981f2796bbdbbab6b81c4e984771fb32673 100644 --- a/security/README.txt +++ b/security/README.txt @@ -1,7 +1,7 @@ Description for security_settings.ini values. -The option "superadmin" means that a setting is only available to the admin user with userid 1 in the interface. +The option "superadmin" means that a setting is only available to the admin user with userid 1 in the interface. If there are other amdins, then they cant access this setting. ----------------------------------------------------------- @@ -57,14 +57,6 @@ Setting: admin_allow_osupdate Options: yes/no/superadmin Description: Disables System > OS update -Setting: admin_allow_software_packages -Options: yes/no/superadmin -Description: Disables System > Apps & Addons > Packages and Update - -Setting: admin_allow_software_repo -Options: yes/no/superadmin -Description: Disables System > Apps & Addons > Repo - Setting: remote_api_allowed Options: yes/no Description: Disables the remote API @@ -80,13 +72,13 @@ Description: Enables the Intrusion Detection System Setting: ids_log_level Options: 1 (number, default = 1) Description: IDS score that triggers the log in /usr/local/ispconfig/interface/temp/ids.log - This log can be used to feed the whitelist. - + This log can be used to feed the whitelist. + Example: - + cat /usr/local/ispconfig/interface/temp/ids.log >> /usr/local/ispconfig/security/ids.whitelist rm -f /usr/local/ispconfig/interface/temp/ids.log - + If you want to use a custom whitelist, then store it as /usr/local/ispconfig/security/ids.whitelist.custom Setting: ids_warn_level @@ -95,7 +87,7 @@ Description: When the IDS score exceeds this level, a error message is logged in Setting: ids_block_level Options: 100 (number, default = 100) -Description: When the IDS score exceeds this level, a error message is shown to the user and further processing is blocked. A score of 100 will most likely never be reached. +Description: When the IDS score exceeds this level, a error message is shown to the user and further processing is blocked. A score of 100 will most likely never be reached. We have choosen such a high score as default until we have more complete whitelists for this new feature. Setting: sql_scan_enabled @@ -135,5 +127,3 @@ Description: Warn by email when /etc/shadow has been changed. Setting: warn_group_change Options: yes/no Description: Warn by email when /etc/group has been changed. - - diff --git a/server/conf/apache_ispconfig.conf.master b/server/conf/apache_ispconfig.conf.master index b1de2a167621b5ff3fa242e33f64be14ef3065a3..2b6038c54aa420817a0198a4b91d8ac4455f3d56 100644 --- a/server/conf/apache_ispconfig.conf.master +++ b/server/conf/apache_ispconfig.conf.master @@ -1,8 +1,12 @@ +# Important: A copy of this file exists in install/tpl/ folder. +# Edit both files when applying changes. + ################################################ # ISPConfig General Apache Options ################################################ ServerTokens ProductOnly ServerSignature Off +DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm standard_index.html ################################################ # ISPConfig Logfile configuration for vlogger diff --git a/server/conf/autoresponder.master b/server/conf/autoresponder.master index 114db23d640125eccc0fb4ba4f9454d704ad92c0..8a908f8492e1a7a8bc4d1c358e4fc4cc8b5b51f9 100644 --- a/server/conf/autoresponder.master +++ b/server/conf/autoresponder.master @@ -4,7 +4,7 @@ if ($RETURNCODE==1) { if (!/^List-Unsubscribe:.*/:h ) { - if (!/^(X-Spam-Flag: YES|X-Spam: Yes|Subject: \*\*\*\s*SPAM\s*\*\*\*.*)/:h ) + if (!/^(X-Spam-Flag: YES|X-Spam: Yes|X-Spam-Status: Yes)/:h ) { NOW=time if ({start_date} lt $NOW && {end_date} gt $NOW) @@ -20,4 +20,4 @@ if ($RETURNCODE==1) } } } -} \ No newline at end of file +} diff --git a/server/conf/awstats_index.php.master b/server/conf/awstats_index.php.master index b3e694ebbf3441038b45508f8e1e1624c3a0f481..86eec8a73dea0038a4d4e9c77e8088e3d20a44cd 100644 --- a/server/conf/awstats_index.php.master +++ b/server/conf/awstats_index.php.master @@ -43,23 +43,17 @@ if ($handle = opendir('.')) arsort($awprev); $options = ""; -foreach ($awprev as $key => $value) -{ - - if(file_exists($value.'/awsindex.html') && file_exists($value.'/goaindex.html')) { - $awstatsindex = 'awsindex.html'; - } elseif(file_exists($value.'/awsindex.html') && !file_exists($value.'/goaindex.html')) { - $awstatsindex = 'awsindex.html'; - } else { - $awstatsindex = 'goaindex.html'; - } - +foreach ($awprev as $key => $value) { + // Define name for the index file + $awstatsindex = 'awsindex.html'; + if(!file_exists($value.'/awsindex.html') && file_exists($value.'/goaindex.html')) { + $awstatsindex = 'goaindex.html'; + } + // Set name for first entry in month list if($key == $current) $options .= "<option selected=\"selected\" value=\"{$awstatsindex}\">{$value}</option>\n"; else $options .= "<option value=\"{$value}/{$awstatsindex}\">{$value}</option>\n"; } -$awstatsindex = 'awsindex.html'; - $html = "<!DOCTYPE html>\n<html>\n<head>\n<title>Stats</title>\n"; $html .= "<style>\nhtml,body {margin:0px;padding:0px;width:100%;height:100%;background-color: #ccc;}\n"; $html .= "#header\n{\nwidth:100%;margin:0px auto;\nheight:20px;\nposition:fixed;\npadding:4px;\ntext-align:center;\n}\n"; @@ -68,7 +62,7 @@ $html .= $script; $html .= "<div id=\"header\">{$yearmonth_text}\n"; $html .= "<select name=\"awdate\" onchange=\"load_content(this.value)\">\n"; $html .= $options; -$html .= "</select>\n</div>\n<iframe src=\"{$awstatsindex}\" id=\"content\"></iframe>\n"; +$html .= "</select>\n</div>\n<iframe src=\"awsindex.html\" id=\"content\"></iframe>\n"; $html .= "</body></html>"; echo $html; ?> diff --git a/server/conf/bind_pri.domain.master b/server/conf/bind_pri.domain.master index e5af0ca3118401e1cd20853ecd58956685111267..efaa06a28d4242a19e4f636d536c614202a4b66d 100644 --- a/server/conf/bind_pri.domain.master +++ b/server/conf/bind_pri.domain.master @@ -54,7 +54,7 @@ $TTL {tmpl_var name='ttl'} {tmpl_var name='name'} {tmpl_var name='ttl'} SRV {tmpl_var name='aux'} {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='SSHFP'> -{tmpl_var name='name'} {tmpl_var name='ttl'} SSHFP {tmpl_var name='data'} {tmpl_var name='data'} +{tmpl_var name='name'} {tmpl_var name='ttl'} SSHFP {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='TLSA'> {tmpl_var name='name'} {tmpl_var name='ttl'} TLSA {tmpl_var name='data'} diff --git a/server/conf/nginx_apps.vhost.master b/server/conf/nginx_apps.vhost.master index b91d1a16c5f05344b0d6c863e28c4043334d5414..181f4c807e2ee0761e61ef26f3f0589153703ca2 100644 --- a/server/conf/nginx_apps.vhost.master +++ b/server/conf/nginx_apps.vhost.master @@ -7,7 +7,7 @@ server { {ssl_comment}ssl_certificate_key /usr/local/ispconfig/interface/ssl/ispserver.key; # redirect to https if accessed with http - {ssl_comment}error_page 497 https://$host:{vhost_port}$request_uri; + {ssl_comment}error_page 497 https://$host:{apps_vhost_port}$request_uri; server_name {apps_vhost_servername}; diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index f2b3e0f8338fc5d520dd5ce975e32d4131bfec9c..1c219f0cd4654ef88356afd1f67a95d3577baab9 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -15,7 +15,7 @@ server { listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl http2; <tmpl_if name='use_proxy_protocol' op='==' value='y'> <tmpl_if name='proxy_protocol_https' op='>' value='0'> - listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_https'> ssl proxy_protocol; + listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_https'> ssl http2 proxy_protocol; </tmpl_if> </tmpl_if> @@ -60,13 +60,13 @@ server { </tmpl_loop> <tmpl_loop name="local_redirects"> if ($http_host <tmpl_var name='local_redirect_operator'> "<tmpl_var name='local_redirect_origin_domain'>") { - rewrite ^<tmpl_var name='local_redirect_exclude'>(.*)$ <tmpl_var name='local_redirect_target'>$1 <tmpl_var name='local_redirect_type'>; + rewrite ^<tmpl_var name='local_redirect_exclude'>(.*)$ <tmpl_var name='local_redirect_target'>$2 <tmpl_var name='local_redirect_type'>; } </tmpl_loop> <tmpl_loop name="own_redirects"> <tmpl_if name='use_rewrite'> - <tmpl_if name='exclude_own_hostname'>if ($http_host != "<tmpl_var name='exclude_own_hostname'>") { </tmpl_if>rewrite ^<tmpl_var name='rewrite_exclude'>(.*)$ <tmpl_var name='rewrite_target'>$1 <tmpl_var name='rewrite_type'>;<tmpl_if name='exclude_own_hostname'> }</tmpl_if> + <tmpl_if name='exclude_own_hostname'>if ($http_host != "<tmpl_var name='exclude_own_hostname'>") { </tmpl_if>rewrite ^<tmpl_var name='rewrite_exclude'>(.*)$ <tmpl_var name='rewrite_target'>$2 <tmpl_var name='rewrite_type'>;<tmpl_if name='exclude_own_hostname'> }</tmpl_if> </tmpl_if> <tmpl_if name='use_proxy'> location / { @@ -79,7 +79,7 @@ server { </tmpl_if> </tmpl_loop> <tmpl_if name='use_proxy' op='!=' value='y'> - index index.html index.htm index.php index.cgi index.pl index.xhtml; + index index.html index.htm index.php index.cgi index.pl index.xhtml standard_index.html; <tmpl_if name='ssi' op='==' value='y'> location ~ \.shtml$ { @@ -355,11 +355,18 @@ server { <tmpl_if name='ipv6_enabled'> listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='http_port'>; </tmpl_if> +<tmpl_if name='ipv6_wildcard'> + listen [::]:<tmpl_var name='http_port'>; +</tmpl_if> + <tmpl_if name='ssl_enabled'> - listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl; + listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl http2; <tmpl_if name='ipv6_enabled'> - listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='https_port'> ssl; + listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='https_port'> ssl http2; +</tmpl_if> +<tmpl_if name='ipv6_wildcard'> + listen [::]:<tmpl_var name='https_port'> ssl http2; </tmpl_if> ssl_certificate <tmpl_var name='ssl_crt_file'>; ssl_certificate_key <tmpl_var name='ssl_key_file'>; diff --git a/server/conf/rspamd_classifier-bayes.conf.master b/server/conf/rspamd_classifier-bayes.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..c9e83495aa854bea551430299b47827b7b2a9990 --- /dev/null +++ b/server/conf/rspamd_classifier-bayes.conf.master @@ -0,0 +1,15 @@ +backend = "redis"; +<tmpl_if name="rspamd_redis_bayes_servers"> +servers = "<tmpl_var name='rspamd_redis_bayes_servers'>"; +</tmpl_if> +<tmpl_if name="rspamd_redis_bayes_password"> +password = "<tmpl_var name='rspamd_redis_bayes_password'>"; +</tmpl_if> +autolearn { + spam_threshold = 6.0; + ham_threshold = -0.5; # When to learn ham (score <= threshold) + check_balance = true; # Check spam and ham balance + min_balance = 0.9; # Keep diff for spam/ham learns for at least this value +} +per_user = false; +per_language = true; diff --git a/server/conf/rspamd_dkim_signing.conf.master b/server/conf/rspamd_dkim_signing.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..10d89e74952075ce6daa6244ef9dbf5b22fa4a5a --- /dev/null +++ b/server/conf/rspamd_dkim_signing.conf.master @@ -0,0 +1,4 @@ +try_fallback = false; +use_esld = false; +path_map = "/etc/rspamd/local.d/dkim_domains.map"; +selector_map = "/etc/rspamd/local.d/dkim_selectors.map"; diff --git a/server/conf/rspamd_options.inc.master b/server/conf/rspamd_options.inc.master new file mode 100644 index 0000000000000000000000000000000000000000..537816c8036e7152e3dcf510afde87219c0aeaac --- /dev/null +++ b/server/conf/rspamd_options.inc.master @@ -0,0 +1,12 @@ +# Addrs local to this server. +local_addrs = [ + "127.0.0.0/8", + "::1", +<tmpl_loop name="local_addrs"> <tmpl_var name='quoted_ip'></tmpl_loop>]; + +# This list is generated by ISPConfig, place custom addresses/networks in local_networks.inc. +local_networks = "/etc/rspamd/local.d/local_networks.inc"; + +dns { + nameserver = ["127.0.0.1:53:10"]; +} diff --git a/server/conf/rspamd_redis.conf.master b/server/conf/rspamd_redis.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..08b7f8ca901cc937a5c47f7b80c78b02121e093c --- /dev/null +++ b/server/conf/rspamd_redis.conf.master @@ -0,0 +1,4 @@ +servers = "<tmpl_var name='rspamd_redis_servers'>"; +<tmpl_if name="rspamd_redis_password"> +password = "<tmpl_var name='rspamd_redis_password'>"; +</tmpl_if> diff --git a/server/conf/rspamd_users.conf.master b/server/conf/rspamd_users.conf.master deleted file mode 100644 index 73d437d6cbdd3a7292af84855364cdfee7de977a..0000000000000000000000000000000000000000 --- a/server/conf/rspamd_users.conf.master +++ /dev/null @@ -1,43 +0,0 @@ -settings { - authenticated { - priority = 10; - authenticated = yes; - #apply "default" { groups_disabled = ["rbl", "spf"]; } - apply "default" { - #symbols_enabled = []; - symbols_disabled = []; - #groups_enabled = []; - groups_disabled = ["rbl"]; - } - } - whitelist { - priority = 10; - rcpt = "postmaster"; - rcpt = "hostmaster"; - rcpt = "abuse"; - want_spam = yes; - } - whitelist-ip { - priority = 10; -<tmpl_loop name="whitelist_ips"> - ip = "<tmpl_var name='ip'>"; -</tmpl_loop> - - want_spam = yes; - } -# whitelist-timmehosting { -# priority = 20; -# from = "@xxx"; -# from = "@xxx"; -# want_spam = yes; -# } - whitelist-ca { - priority = 20; - from = "@comodo.com"; - from = "@geotrust.com"; - from = "@geotrusteurope.com"; - want_spam = yes; - } - .include(try=true; glob=true) "$LOCAL_CONFDIR/local.d/users/*.conf" - .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/users.local.conf" -} diff --git a/server/conf/rspamd_users.inc.conf.master b/server/conf/rspamd_users.inc.conf.master index 96ba9f08384f0c42fa398517f4e34ff301c83648..83dd5b27643143a94340d49a7c913ed191840ae3 100644 --- a/server/conf/rspamd_users.inc.conf.master +++ b/server/conf/rspamd_users.inc.conf.master @@ -38,9 +38,11 @@ actions { <tmpl_if name='rspamd_spam_tag_method' op='==' value='rewrite_subject'> "rewrite subject" = <tmpl_var name='rspamd_spam_tag_level'>; + "add header" = null; </tmpl_if> <tmpl_if name='rspamd_spam_tag_method' op='==' value='add_header'> "add header" = <tmpl_var name='rspamd_spam_tag_level'>; + "rewrite subject" = null; </tmpl_if> reject = <tmpl_var name='rspamd_spam_kill_level'>; <tmpl_if name='greylisting'> diff --git a/server/conf/sieve_filter.master b/server/conf/sieve_filter.master index dd2dfb96473667b849fb98527d1551263d043b3a..fd216d3d6401bf2e81f35b7239041daabbfd6054 100644 --- a/server/conf/sieve_filter.master +++ b/server/conf/sieve_filter.master @@ -7,7 +7,7 @@ require ["fileinto", "mailbox", "regex", "date", "relational", "vacation", "imap <tmpl_if name="move_junk" op="==" value="y"> # Move spam to spam folder -if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { +if anyof (header :is ["X-Spam", "X-Spam-Flag"] "Yes", header :matches "X-Spam-Status" "Yes, *") { fileinto :create "Junk"; # Stop here so that we do not reply on spams stop; @@ -33,7 +33,7 @@ require ["fileinto", "mailbox", "regex", "date", "relational", "vacation", "imap <tmpl_if name="move_junk" op="==" value="a"> # Move spam to spam folder -if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { +if anyof (header :is ["X-Spam", "X-Spam-Flag"] "Yes", header :matches "X-Spam-Status" "Yes, *") { fileinto :create "Junk"; # Stop here so that we do not reply on spams stop; @@ -46,7 +46,7 @@ if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", ################################################################# # Move spam to spam folder -if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { +if anyof (header :is ["X-Spam", "X-Spam-Flag"] "Yes", header :matches "X-Spam-Status" "Yes, *") { # Stop here so that we do not reply on spams stop; } diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 5b5e1f059e94f5b58b3fad4c64cf1a4dcd70111d..0b432f2bf4de7b9c5418462f8a12ff6f523763bb 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -517,6 +517,9 @@ RewriteCond %{REQUEST_URI} !^/php-fcgi/ RewriteCond %{REQUEST_URI} !^<tmpl_var name='rewrite_target'> </tmpl_if> +<tmpl_if name="rewrite_target_is_ssl" op="==" value="y"> + SSLProxyEngine On +</tmpl_if> RewriteRule ^/(.*)$ <tmpl_var name='rewrite_target'><tmpl_if name="rewrite_add_path" op="==" value="y">$1</tmpl_if> <tmpl_var name='rewrite_type'> diff --git a/server/lib/classes/cron.d/500-backup_mail.inc.php b/server/lib/classes/cron.d/500-backup_mail.inc.php index f631f0043cbba060e644ae8a0054dc1d785fe3f0..6a133fa839fe3d14c6701b4d0a0fa3909376a60a 100644 --- a/server/lib/classes/cron.d/500-backup_mail.inc.php +++ b/server/lib/classes/cron.d/500-backup_mail.inc.php @@ -126,7 +126,7 @@ class cronjob_backup_mail extends cronjob { if ($rec['maildir_format'] == 'mdbox') { if (empty($this->tmp_backup_dir)) $this->tmp_backup_dir = $rec['maildir']; // Create temporary backup-mailbox - $app->system->exec_safe("su -c ?", 'dsync backup -u "'.$rec["email"].'" mdbox:' . $this->tmp_backup_dir . '/backup'); + $app->system->exec_safe("su -c ?", 'dsync backup -o plugin/acl= -o plugin/quota= -u "'.$rec["email"].'" mdbox:' . $this->tmp_backup_dir . '/backup'); if($backup_mode == 'userzip') { $mail_backup_file.='.zip'; diff --git a/server/lib/classes/cron.d/600-file_cleanup.inc.php b/server/lib/classes/cron.d/600-file_cleanup.inc.php new file mode 100644 index 0000000000000000000000000000000000000000..765b0910414bc588b59af5148a7112bfcdb139ee --- /dev/null +++ b/server/lib/classes/cron.d/600-file_cleanup.inc.php @@ -0,0 +1,143 @@ +<?php + +/* +Copyright (c) 2021, Jesse Norell +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of ISPConfig nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +class cronjob_file_cleanup extends cronjob { + + // job schedule + protected $_schedule = '* * * * *'; + protected $_run_at_new = true; + + public function onBeforeRun() { + global $app; + + /* currently we only cleanup rspamd config files, so bail if not needed */ + if (! is_dir("/etc/rspamd/local.d/users/")) { + return false; + } + + return parent::onBeforeRun(); + } + + public function onRunJob() { + global $app, $conf; + + $server_id = $conf['server_id']; + + /* rspamd config file cleanup */ + if (is_dir("/etc/rspamd/local.d/users/")) { + $mail_access = array(); + $sql = "SELECT access_id as id FROM mail_access WHERE active = 'y' AND server_id = ?"; + $records = $app->db->queryAllRecords($sql, $server_id); + if(is_array($records)) { + foreach($records as $rec){ + $mail_access[$rec['id']] = $rec['id']; + } + } + + $spamfilter_wblist = array(); + $sql = "SELECT wblist_id as id FROM spamfilter_wblist WHERE active = 'y' AND server_id = ?"; + $records = $app->db->queryAllRecords($sql, $server_id); + if(is_array($records)) { + foreach($records as $rec){ + $spamfilter_wblist[$rec['id']] = $rec['id']; + } + } + + $spamfilter_users = array(); + $sql = "SELECT id FROM spamfilter_users WHERE policy_id != 0 AND server_id = ?"; + $records = $app->db->queryAllRecords($sql, $server_id); + if(is_array($records)) { + foreach($records as $rec){ + $spamfilter_users[$rec['id']] = $rec['id']; + } + } + + $mail_user = array(); + $sql = "SELECT mailuser_id as id FROM mail_user WHERE postfix = 'y' AND server_id = ?"; + $records = $app->db->queryAllRecords($sql, $server_id); + if(is_array($records)) { + foreach($records as $rec){ + $mail_user[$rec['id']] = $rec['id']; + } + } + + $mail_forwarding = array(); + $sql = "SELECT forwarding_id as id FROM mail_forwarding WHERE active = 'y' AND server_id = ?"; + $records = $app->db->queryAllRecords($sql, $server_id); + if(is_array($records)) { + foreach($records as $rec){ + $mail_forwarding[$rec['id']] = $rec['id']; + } + } + + foreach (glob('/etc/rspamd/local.d/users/*.conf') as $file) { + if($handle = fopen($file, 'r')) { + if(($line = fgets($handle)) !== false) { + if(preg_match('/^((?:global|spamfilter)_wblist|ispc_(spamfilter_user|mail_user|mail_forwarding))[_-](\d+)\s/', $line, $matches)) { + switch($matches[1]) { + case 'global_wblist': + $remove = isset($mail_access[$matches[3]]) ? false : true; + break; + case 'spamfilter_wblist': + $remove = isset($spamfilter_wblist[$matches[3]]) ? false : true; + break; + case 'ispc_spamfilter_user': + $remove = isset($spamfilter_users[$matches[3]]) ? false : true; + break; + case 'ispc_mail_user': + $remove = isset($mail_user[$matches[3]]) ? false : true; + break; + case 'ispc_mail_forwarding': + $remove = isset($mail_forwarding[$matches[3]]) ? false : true; + break; + default: + $app->log("conf file has unhandled rule naming convention, ignoring: $file", LOGLEVEL_DEBUG); + $remove = false; + } + if($remove) { + $app->log("$matches[1] id $matches[3] not found, removing $file", LOGLEVEL_DEBUG); + unlink($file); + $this->restartServiceDelayed('rspamd', 'reload'); + } + } else { + $app->log("conf file has unknown rule naming convention, ignoring: $file", LOGLEVEL_DEBUG); + } + } + + fclose($handle); + } + } + } + + parent::onRunJob(); + } + +} + diff --git a/server/lib/classes/cron.d/600-jailkit_maintenance.inc.php b/server/lib/classes/cron.d/600-jailkit_maintenance.inc.php index 547b7caa1a2107941aa0fa2aeda195e3174e6d55..e38ee58210fe329c1ef0c9b91804f70615528441 100644 --- a/server/lib/classes/cron.d/600-jailkit_maintenance.inc.php +++ b/server/lib/classes/cron.d/600-jailkit_maintenance.inc.php @@ -34,22 +34,6 @@ class cronjob_jailkit_maintenance extends cronjob { protected $_schedule = '*/5 * * * *'; protected $_run_at_new = true; - //private $_tools = null; - - /* this function is optional if it contains no custom code */ - public function onPrepare() { - global $app; - - parent::onPrepare(); - } - - /* this function is optional if it contains no custom code */ - public function onBeforeRun() { - global $app; - - return parent::onBeforeRun(); - } - public function onRunJob() { global $app, $conf; @@ -66,6 +50,18 @@ class cronjob_jailkit_maintenance extends cronjob { $options = array('allow_hardlink'); } + // force all jails to update every 2 weeks + if (! is_file('/usr/local/ispconfig/server/temp/jailkit_force_update.ts')) { + if(!@is_dir('/usr/local/ispconfig/server/temp')) { + $app->system->mkdirpath('/usr/local/ispconfig/server/temp'); + } + $app->system->touch('/usr/local/ispconfig/server/temp/jailkit_force_update.ts'); + } elseif ( time() - filemtime('/usr/local/ispconfig/server/temp/jailkit_force_update.ts') > 60 * 60 * 24 * 14 ) { + $update_hash = 'force_update'.time(); + $app->db->query("UPDATE web_domain SET last_jailkit_hash = ? WHERE type = 'vhost' AND server_id = ?", $update_hash, $conf['server_id']); + $app->system->touch('/usr/local/ispconfig/server/temp/jailkit_force_update.ts'); + } + // limit the number of jails we update at one time according to time of day $num_jails_to_update = (date('H') < 6) ? 25 : 3; @@ -111,11 +107,12 @@ class cronjob_jailkit_maintenance extends cronjob { sort($last_updated, SORT_STRING); $update_hash = hash('md5', implode(' ', $last_updated)); - if (is_file( $rec['document_root']."/bin/bash" )) { + if (substr($rec['last_jailkit_hash'], 0, strlen('force_update')) === 'force_update') { + $options[] = 'force'; + } elseif (is_file( $rec['document_root']."/bin/bash" )) { # test that /bin/bash functions in the jail -print "chroot --userspec ".$rec['system_user'].":".$rec['system_group']." ".$rec['document_root']." /bin/bash -c true 2>/dev/null\n"; - if (! $app->system->exec_safe("chroot --userspec ?:? ? /bin/bash -c true 2>/dev/null", $rec['system_user'], $rec['system_group'], $rec['document_root'])) { -print "/bin/bash test failed, forcing update\n"; + $app->system->exec_safe("chroot --userspec ?:? ? /bin/bash -c true 2>/dev/null", $rec['system_user'], $rec['system_group'], $rec['document_root']); + if ($app->system->last_exec_retcode()) { # return 0 means success $options[] = 'force'; # bogus hash will not match, triggering an update $update_hash = 'force_update'.time(); @@ -146,10 +143,5 @@ print "/bin/bash test failed, forcing update\n"; parent::onRunJob(); } - /* this function is optional if it contains no custom code */ - public function onAfterRun() { - parent::onAfterRun(); - } - } diff --git a/server/lib/classes/cronjob.inc.php b/server/lib/classes/cronjob.inc.php index 61d45749a841fb2d8826b0a82dd96588fd816f49..df410042db0c5be4afff122a08747858a42154e1 100644 --- a/server/lib/classes/cronjob.inc.php +++ b/server/lib/classes/cronjob.inc.php @@ -43,6 +43,9 @@ class cronjob { protected $_next_run = null; private $_running = false; + // services for delayed restart/reload + private $_delayed_restart_services = array(); + /** return schedule */ @@ -178,6 +181,12 @@ class cronjob { global $app, $conf; if($conf['log_priority'] <= LOGLEVEL_DEBUG) print "Called onAfterRun() for class " . get_class($this) . "\n"; + + if(is_array($this->_delayed_restart_services)) { + foreach ($this->_delayed_restart_services as $service => $mode) { + $this->restartService($service, $mode); + } + } } // child classes may NOT override this! @@ -188,6 +197,29 @@ class cronjob { $app->db->query("UPDATE `sys_cron` SET `running` = 0 WHERE `name` = ?", get_class($this)); } + // child classes may NOT override this! + protected function restartService($service, $action='restart') { + global $app; + + $app->uses('system'); + + $retval = array('output' => '', 'retval' => 0); + if($action == 'reload') { + exec($app->system->getinitcommand($service, 'reload').' 2>&1', $retval['output'], $retval['retval']); + } else { + exec($app->system->getinitcommand($service, 'restart').' 2>&1', $retval['output'], $retval['retval']); + } + return $retval; + } + + // child classes may NOT override this! + protected function restartServiceDelayed($service, $action='restart') { + $action = ($action == 'reload' ? 'reload' : 'restart'); + + if (is_array($this->_delayed_restart_services)) { + $this->_delayed_restart_services[$service] = $action; + } + } + } -?> diff --git a/server/lib/classes/ispcmail.inc.php b/server/lib/classes/ispcmail.inc.php index 2b3dc78cfc66658136443a4367e22caad0c49b71..f5aa35957753ec1c6ff65d6a9eb555cff747065e 100644 --- a/server/lib/classes/ispcmail.inc.php +++ b/server/lib/classes/ispcmail.inc.php @@ -612,6 +612,9 @@ class ispcmail { if (stream_socket_enable_crypto($this->_smtp_conn, true, $crypto_method) != true) { return false; } + + fputs($this->_smtp_conn, 'HELO ' . $this->smtp_helo . $this->_crlf); + $response = fgets($this->_smtp_conn, 515); } //AUTH LOGIN diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php index a118d55769941f386311885cfecc86c02f903de4..ac805a6b67340506236d995c84dc9c8868adf755 100644 --- a/server/lib/classes/letsencrypt.inc.php +++ b/server/lib/classes/letsencrypt.inc.php @@ -80,7 +80,7 @@ class letsencrypt { } public function get_certbot_script() { - $letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot')); + $letsencrypt = explode("\n", shell_exec('which certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot letsencrypt')); $letsencrypt = reset($letsencrypt); if(is_executable($letsencrypt)) { return $letsencrypt; @@ -137,6 +137,7 @@ class letsencrypt { return false; } + $primary_domain = $domains[0]; $matches = array(); $ret = null; $val = 0; @@ -151,18 +152,22 @@ class letsencrypt { $acme_version = 'https://acme-v01.api.letsencrypt.org/directory'; } if (version_compare($letsencrypt_version, '0.30', '>=')) { - $app->log("LE version is " . $letsencrypt_version . ", so using certificates command", LOGLEVEL_DEBUG); + $app->log("LE version is " . $letsencrypt_version . ", so using certificates command and --cert-name instead of --expand", LOGLEVEL_DEBUG); $this->certbot_use_certcommand = true; $webroot_map = array(); for($i = 0; $i < count($domains); $i++) { $webroot_map[$domains[$i]] = '/usr/local/ispconfig/interface/acme'; } $webroot_args = "--webroot-map " . escapeshellarg(str_replace(array("\r", "\n"), '', json_encode($webroot_map))); + // --cert-name might be working with earlier versions of certbot, but there is no exact version documented + // So for safety reasons we add it to the 0.30 version check as it is documented to work as expected in this version + $cert_selection_command = "--cert-name $primary_domain"; } else { $webroot_args = "$cmd --webroot-path /usr/local/ispconfig/interface/acme"; + $cert_selection_command = "--expand"; } - $cmd = $letsencrypt . " certonly -n --text --agree-tos --expand --authenticator webroot --server $acme_version --rsa-key-size 4096 --email postmaster@$domain $webroot_args"; + $cmd = $letsencrypt . " certonly -n --text --agree-tos $cert_selection_command --authenticator webroot --server $acme_version --rsa-key-size 4096 --email webmaster@$primary_domain $webroot_args"; return $cmd; } @@ -317,8 +322,15 @@ class letsencrypt { if($this->get_acme_script()) { $use_acme = true; } elseif(!$this->get_certbot_script()) { + $app->log("Unable to find Let's Encrypt client, installing acme.sh.", LOGLEVEL_DEBUG); // acme and le missing $this->install_acme(); + if($this->get_acme_script()) { + $use_acme = true; + } else { + $app->log("Unable to install acme.sh. Cannot proceed, no Let's Encrypt client found.", LOGLEVEL_WARN); + return false; + } } $tmp = $app->letsencrypt->get_website_certificate_paths($data); @@ -399,11 +411,13 @@ class letsencrypt { $this->certbot_use_certcommand = false; $letsencrypt_cmd = ''; $allow_return_codes = null; + $old_umask = umask(0022); # work around acme.sh permission bug, see #6015 if($use_acme) { $letsencrypt_cmd = $this->get_acme_command($temp_domains, $key_file, $bundle_file, $crt_file, $server_type); $allow_return_codes = array(2); } else { $letsencrypt_cmd = $this->get_certbot_command($temp_domains); + umask($old_umask); } $success = false; @@ -420,6 +434,7 @@ class letsencrypt { } if($use_acme === true) { + umask($old_umask); if(!$success) { $app->log('Let\'s Encrypt SSL Cert for: ' . $domain . ' could not be issued.', LOGLEVEL_WARN); $app->log($letsencrypt_cmd, LOGLEVEL_WARN); diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index 9d7a22574524c6752466263545ae05baa5dfc529..42ed9146e4f12f90ab67a75028f896cca1c2d2d4 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -221,6 +221,12 @@ class monitor_tools { $distconfid = 'debian100'; $distid = 'debian60'; $distbaseid = 'debian'; + } elseif(substr(trim(file_get_contents('/etc/debian_version')),0,2) == '11') { + $distname = 'Debian'; + $distver = 'Bullseye'; + $distconfid = 'debian110'; + $distid = 'debian60'; + $distbaseid = 'debian'; } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '/sid')) { $distname = 'Debian'; $distver = 'Testing'; diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index a26707b0aea1a76258773b8f8902e34b66112d76..9c202542e89da6bb2c71e6aff9a1ccd40e264931 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1591,44 +1591,6 @@ class system{ - /** - * Scan the trash for virusses infection - * - */ - function make_trashscan(){ - global $app; - //trashscan erstellen - // Template Öffnen - $app->tpl->clear_all(); - $app->tpl->define( array(table => 'trashscan.master')); - - if(!isset($this->server_conf['virusadmin']) || trim($this->server_conf['virusadmin']) == '') $this->server_conf['virusadmin'] = 'admispconfig@localhost'; - if(substr($this->server_conf['virusadmin'], 0, 1) == '#'){ - $notify = 'no'; - } else { - $notify = 'yes'; - } - - // Variablen zuweisen - $app->tpl->assign( array(VIRUSADMIN => $this->server_conf['virusadmin'], - NOTIFICATION => $notify)); - - $app->tpl->parse(TABLE, table); - - $trashscan_text = $app->tpl->fetch(); - - $datei = '/home/admispconfig/ispconfig/tools/clamav/bin/trashscan'; - $app->file->wf($datei, $trashscan_text); - - chmod($datei, 0755); - chown($datei, 'admispconfig'); - chgrp($datei, 'admispconfig'); - } - - - - - /** * Get the current time * @@ -2412,6 +2374,7 @@ class system{ public function create_jailkit_chroot($home_dir, $app_sections = array(), $options = array()) { global $app; +$app->log("create_jailkit_chroot: called for home_dir $home_dir with options: " . print_r($options, true), LOGLEVEL_DEBUG); // Disallow operating on root directory if(realpath($home_dir) == '/') { @@ -2428,6 +2391,9 @@ class system{ } elseif(is_string($app_sections)) { $app_sections = preg_split('/[\s,]+/', $app_sections); } + if(! is_array($options)) { + $options = (is_string($options) ? preg_split('/[\s,]+/', $options) : array()); + } // Change ownership of the chroot directory to root $this->chown($home_dir, 'root'); @@ -2485,6 +2451,7 @@ class system{ public function create_jailkit_programs($home_dir, $programs = array(), $options = array()) { global $app; +$app->log("create_jailkit_programs: called for home_dir $home_dir with options: " . print_r($options, true), LOGLEVEL_DEBUG); // Disallow operating on root directory if(realpath($home_dir) == '/') { @@ -2501,6 +2468,9 @@ class system{ } elseif(is_string($programs)) { $programs = preg_split('/[\s,]+/', $programs); } + if(! is_array($options)) { + $options = (is_string($options) ? preg_split('/[\s,]+/', $options) : array()); + } # prohibit ill-advised copying paths known to be sensitive/problematic # (easy to bypass if needed, eg. use /./etc) diff --git a/server/mods-available/server_module.inc.php b/server/mods-available/server_module.inc.php index bc846cf53062b0cec4fc653095a00ecace34f6a1..92a50c51286b32f092150568d6cc69bfc0c4f845 100644 --- a/server/mods-available/server_module.inc.php +++ b/server/mods-available/server_module.inc.php @@ -40,10 +40,7 @@ class server_module { 'server_ip_delete', 'firewall_insert', 'firewall_update', - 'firewall_delete', - 'software_update_inst_insert', - 'software_update_inst_update', - 'software_update_inst_delete'); + 'firewall_delete'); //* This function is called during ispconfig installation to determine // if a symlink shall be created for this plugin. @@ -81,7 +78,6 @@ class server_module { $app->modules->registerTableHook('server', 'server_module', 'process'); $app->modules->registerTableHook('server_ip', 'server_module', 'process'); $app->modules->registerTableHook('firewall', 'server_module', 'process'); - $app->modules->registerTableHook('software_update_inst', 'server_module', 'process'); // Register service //$app->services->registerService('httpd','web_module','restartHttpd'); @@ -112,11 +108,6 @@ class server_module { if($action == 'u') $app->plugins->raiseEvent('firewall_update', $data); if($action == 'd') $app->plugins->raiseEvent('firewall_delete', $data); break; - case 'software_update_inst': - if($action == 'i') $app->plugins->raiseEvent('software_update_inst_insert', $data); - if($action == 'u') $app->plugins->raiseEvent('software_update_inst_update', $data); - if($action == 'd') $app->plugins->raiseEvent('software_update_inst_delete', $data); - break; } // end switch } // end function diff --git a/server/mods-available/web_module.inc.php b/server/mods-available/web_module.inc.php index 12ad81ef9cd38db186728d0517e8a73422f03904..6019100ed76a01f59db4f82de24afd595798f117 100644 --- a/server/mods-available/web_module.inc.php +++ b/server/mods-available/web_module.inc.php @@ -54,6 +54,9 @@ class web_module { 'web_backup_insert', 'web_backup_update', 'web_backup_delete', + 'server_php_insert', + 'server_php_update', + 'server_php_delete', 'aps_instance_insert', 'aps_instance_update', 'aps_instance_delete', @@ -112,6 +115,7 @@ class web_module { $app->modules->registerTableHook('web_folder', 'web_module', 'process'); $app->modules->registerTableHook('web_folder_user', 'web_module', 'process'); $app->modules->registerTableHook('web_backup', 'web_module', 'process'); + $app->modules->registerTableHook('server_php', 'web_module', 'process'); $app->modules->registerTableHook('aps_instances', 'web_module', 'process'); $app->modules->registerTableHook('aps_instances_settings', 'web_module', 'process'); $app->modules->registerTableHook('aps_packages', 'web_module', 'process'); @@ -167,6 +171,11 @@ class web_module { if($action == 'u') $app->plugins->raiseEvent('web_backup_update', $data); if($action == 'd') $app->plugins->raiseEvent('web_backup_delete', $data); break; + case 'server_php': + if($action == 'i') $app->plugins->raiseEvent('server_php_insert', $data); + if($action == 'u') $app->plugins->raiseEvent('server_php_update', $data); + if($action == 'd') $app->plugins->raiseEvent('server_php_delete', $data); + break; case 'aps_instances': if($action == 'i') $app->plugins->raiseEvent('aps_instance_insert', $data); if($action == 'u') $app->plugins->raiseEvent('aps_instance_update', $data); diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 26cd14fd3629e2b7c7aec70d6ef550ad2fc1ffe8..f2a121825b75464ee9af81dd935866509b59ee42 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -278,7 +278,6 @@ class apache2_plugin { $ssl_dir = $data['new']['document_root'].'/ssl'; $domain = ($data['new']['ssl_domain'] != '') ? $data['new']['ssl_domain'] : $data['new']['domain']; $key_file = $ssl_dir.'/'.$domain.'.key'; - $key_file2 = $ssl_dir.'/'.$domain.'.key.org'; $csr_file = $ssl_dir.'/'.$domain.'.csr'; $crt_file = $ssl_dir.'/'.$domain.'.crt'; $bundle_file = $ssl_dir.'/'.$domain.'.bundle'; @@ -293,10 +292,6 @@ class apache2_plugin { $app->system->rename($key_file, $key_file.'.bak'); $app->system->chmod($key_file.'.bak', 0400); } - if(file_exists($key_file2)){ - $app->system->rename($key_file2, $key_file2.'.bak'); - $app->system->chmod($key_file2.'.bak', 0400); - } if(file_exists($csr_file)) $app->system->rename($csr_file, $csr_file.'.bak'); if(file_exists($crt_file)) $app->system->rename($crt_file, $crt_file.'.bak'); @@ -346,27 +341,19 @@ class apache2_plugin { $ssl_ext_file = $ssl_dir.'/v3.ext'; $app->system->file_put_contents($ssl_ext_file, $ext_cnf); - $rand_file = $rand_file; - $key_file2 = $key_file2; - $openssl_cmd_key_file2 = $key_file2; - if(substr($domain, 0, 2) == '*.' && strpos($key_file2, '/ssl/\*.') !== false) $key_file2 = str_replace('/ssl/\*.', '/ssl/*.', $key_file2); // wildcard certificate - $key_file = $key_file; $openssl_cmd_key_file = $key_file; if(substr($domain, 0, 2) == '*.' && strpos($key_file, '/ssl/\*.') !== false) $key_file = str_replace('/ssl/\*.', '/ssl/*.', $key_file); // wildcard certificate $ssl_days = 3650; - $csr_file = $csr_file; $openssl_cmd_csr_file = $csr_file; if(substr($domain, 0, 2) == '*.' && strpos($csr_file, '/ssl/\*.') !== false) $csr_file = str_replace('/ssl/\*.', '/ssl/*.', $csr_file); // wildcard certificate $config_file = $ssl_cnf_file; - $crt_file = $crt_file; $openssl_cmd_crt_file = $crt_file; if(substr($domain, 0, 2) == '*.' && strpos($crt_file, '/ssl/\*.') !== false) $crt_file = str_replace('/ssl/\*.', '/ssl/*.', $crt_file); // wildcard certificate if(is_file($ssl_cnf_file) && !is_link($ssl_cnf_file)) { - - $app->system->exec_safe("openssl genrsa -des3 -rand ? -passout pass:? -out ? 2048", $rand_file, $ssl_password, $openssl_cmd_key_file2); - $app->system->exec_safe("openssl req -new -sha256 -passin pass:? -passout pass:? -key ? -out ? -days ? -config ?", $ssl_password, $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_csr_file, $ssl_days, $config_file); - $app->system->exec_safe("openssl rsa -passin pass:? -in ? -out ?", $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_key_file); + $openssl_cmd = 'openssl req -nodes -newkey rsa:4096 -x509 -days ? -keyout ? -out ? -config ?'; + $app->system->exec_safe($openssl_cmd, $ssl_days, $openssl_cmd_key_file, $openssl_cmd_crt_file, $config_file); + $app->system->exec_safe("openssl req -new -sha256 -key ? -out ? -days ? -config ?", $openssl_cmd_key_file, $openssl_cmd_csr_file, $ssl_days, $config_file); if(file_exists($web_config['CA_path'].'/openssl.cnf')) { @@ -375,15 +362,14 @@ class apache2_plugin { if(filesize($crt_file) == 0 || !file_exists($crt_file)) { $app->log("CA-Certificate signing failed. openssl ca -out $openssl_cmd_crt_file -config " . $web_config['CA_path'] . "/openssl.cnf -passin pass:" . $web_config['CA_pass'] . " -in $openssl_cmd_csr_file -extfile $ssl_ext_file", LOGLEVEL_ERROR); } - }; + } if (@filesize($crt_file)==0 || !file_exists($crt_file)){ - $app->system->exec_safe("openssl req -x509 -passin pass:? -passout pass:? -key ? -in ? -out ? -days ? -config ? ", $ssl_password, $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_csr_file, $openssl_cmd_crt_file, $ssl_days, $config_file); + $app->system->exec_safe($openssl_cmd, $ssl_days, $openssl_cmd_key_file, $openssl_cmd_crt_file, $config_file); $app->log("Creating self-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); - }; + } } - $app->system->chmod($key_file2, 0400); $app->system->chmod($key_file, 0400); @$app->system->unlink($config_file); @$app->system->unlink($rand_file); @@ -445,10 +431,6 @@ class apache2_plugin { $app->system->copy($key_file, $key_file.'~'); $app->system->chmod($key_file.'~', 0400); } - if(file_exists($key_file2)){ - $app->system->copy($key_file2, $key_file2.'~'); - $app->system->chmod($key_file2.'~', 0400); - } if(file_exists($csr_file)) $app->system->copy($csr_file, $csr_file.'~'); if(file_exists($crt_file)) $app->system->copy($crt_file, $crt_file.'~'); if(file_exists($bundle_file)) $app->system->copy($bundle_file, $bundle_file.'~'); @@ -551,7 +533,7 @@ class apache2_plugin { $app->uses('getconf'); $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); - //* Check if this is a chrooted setup + //* Check if apache is using a chrooted setup if($web_config['website_basedir'] != '' && @is_file($web_config['website_basedir'].'/etc/passwd')) { $apache_chrooted = true; $app->log('Info: Apache is chrooted.', LOGLEVEL_DEBUG); @@ -565,7 +547,7 @@ class apache2_plugin { } if($app->system->is_allowed_user($data['new']['system_user'], $app->system->is_user($data['new']['system_user']), true) == false || $app->system->is_allowed_group($data['new']['system_group'], $app->system->is_group($data['new']['system_group']), true) == false) { - $app->log('Websites cannot be owned by the root user or group. User: '.$data['new']['system_user'].' Group: '.$data['new']['system_group'], LOGLEVEL_WARN); + $app->log('Problem with website user or group. Websites cannot be owned by root or an existing user/group. User: '.$data['new']['system_user'].' Group: '.$data['new']['system_group'], LOGLEVEL_WARN); return 0; } if(trim($data['new']['domain']) == '') { @@ -659,7 +641,7 @@ class apache2_plugin { $tmp_symlink = str_replace('[website_domain]', $data['old']['domain'], $tmp_symlink); // Remove trailing slash if(substr($tmp_symlink, -1, 1) == '/') $tmp_symlink = substr($tmp_symlink, 0, -1); - // create the symlinks, if not exist + // remove the old symlinks if they exist if(is_link($tmp_symlink)) { $app->system->exec_safe('rm -f ?', $tmp_symlink); $app->log('Removed symlink: rm -f '.$tmp_symlink, LOGLEVEL_DEBUG); @@ -692,9 +674,7 @@ class apache2_plugin { //* Create new base directory, if it does not exist yet if(!is_dir($new_dir)) $app->system->mkdirpath($new_dir); - $app->system->web_folder_protection($data['old']['document_root'], false); $app->system->exec_safe('mv ? ?', $data['old']['document_root'], $new_dir); - //$app->system->rename($data['old']['document_root'],$new_dir); $app->log('Moving site to new document root: mv '.$data['old']['document_root'].' '.$new_dir, LOGLEVEL_DEBUG); // Handle the change in php_open_basedir @@ -714,15 +694,6 @@ class apache2_plugin { if($apache_chrooted) $app->system->exec_safe('chroot ? ?', $web_config['website_basedir'], $command); //* Change the log mount - /* - $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind'; - $app->system->removeLine('/etc/fstab', $fstab_line); - $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind,nobootwait'; - $app->system->removeLine('/etc/fstab', $fstab_line); - $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind,nobootwait'; - $app->system->removeLine('/etc/fstab', $fstab_line); - */ - $fstab_line_old = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind'; if($web_config['network_filesystem'] == 'y') { @@ -737,8 +708,6 @@ class apache2_plugin { } - //print_r($data); - // Check if the directories are there and create them if necessary. $app->system->web_folder_protection($data['new']['document_root'], false); @@ -788,17 +757,22 @@ class apache2_plugin { $last_updated = array_unique($last_updated, SORT_REGULAR); sort($last_updated, SORT_STRING); $update_hash = hash('md5', implode(' ', $last_updated)); + $check_for_jailkit_updates=false; + + $create_jail_conditions= ($data['old']['php_fpm_chroot'] != 'y' || + ! is_dir($data['new']['document_root'].'/etc/jailkit') || + ($data['old']['php'] != $data['new']['php'] && $data['new']['php'] != 'no')); - // Create jailkit chroot when enabling php_fpm_chroot - if($data['new']['php_fpm_chroot'] == 'y' && $data['old']['php_fpm_chroot'] != 'y') { + // Create jailkit chroot if needed and when enabling php_fpm_chroot + if($data['new']['php_fpm_chroot'] == 'y' && $create_jail_conditions && $data['new']['php'] != 'no') { $website = $app->db->queryOneRecord('SELECT * FROM web_domain WHERE domain_id = ?', $data['new']['domain_id']); $this->website = array_merge($website, $data['new'], array('new_jailkit_hash' => $update_hash)); $this->jailkit_config = $jailkit_config; $this->_setup_jailkit_chroot(); $this->_add_jailkit_user(); - $check_for_jailkit_updates=false; // else delete if unused - } elseif ($data['new']['delete_unused_jailkit'] == 'y' && $data['new']['php_fpm_chroot'] != 'y') { + } elseif (($data['new']['delete_unused_jailkit'] == 'y' && $data['new']['php_fpm_chroot'] != 'y') || + ($data['new']['delete_unused_jailkit'] == 'y' && $data['new']['php'] == 'no')) { $check_for_jailkit_updates=false; $this->_delete_jailkit_if_unused($data['new']['domain_id']); if(is_dir($data['new']['document_root'].'/etc/jailkit')) { @@ -892,7 +866,7 @@ class apache2_plugin { $tmp_symlink = str_replace('[website_domain]', $data['old']['domain'], $tmp_symlink); // Remove trailing slash if(substr($tmp_symlink, -1, 1) == '/') $tmp_symlink = substr($tmp_symlink, 0, -1); - // remove the symlinks, if not exist + // remove the old symlinks if they exist if(is_link($tmp_symlink)) { $app->system->exec_safe('rm -f ?', $tmp_symlink); $app->log('Removed symlink: rm -f '.$tmp_symlink, LOGLEVEL_DEBUG); @@ -953,11 +927,11 @@ class apache2_plugin { $app->system->exec_safe('chmod -R a+r ?', $error_page_path); } - //* Copy the web skeleton files only when there is no index.ph or index.html file yet - if(!file_exists($data['new']['document_root'].'/'.$web_folder.'/index.html') && !file_exists($data['new']['document_root'].'/'.$web_folder.'/index.php')) { + //* Copy the web skeleton files only when there is no index.php, standard_index.html or index.html file yet + if(!file_exists($data['new']['document_root'].'/'.$web_folder.'/index.html') && !file_exists($data['new']['document_root'].'/'.$web_folder.'/index.php') && !file_exists($data['new']['document_root'].'/'.$web_folder.'/standard_index.html')) { if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language'], 0, 2))) { - if(!file_exists($data['new']['document_root'] . '/' . $web_folder . '/index.html')) { - $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html_' . substr($conf['language'], 0, 2), $data['new']['document_root'] . '/' . $web_folder . '/index.html'); + if(!file_exists($data['new']['document_root'] . '/' . $web_folder . '/standard_index.html')) { + $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html_' . substr($conf['language'], 0, 2), $data['new']['document_root'] . '/' . $web_folder . '/standard_index.html'); } if(is_file($conf['rootpath'] . '/conf-custom/index/favicon.ico')) { @@ -968,13 +942,13 @@ class apache2_plugin { } } else { if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html')) { - if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html', $data['new']['document_root'].'/' . $web_folder . '/index.html'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/standard_index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html', $data['new']['document_root'].'/' . $web_folder . '/standard_index.html'); } else { - if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/standard_index.html_'.substr($conf['language'], 0, 2), $data['new']['document_root'].'/' . $web_folder . '/index.html'); - if(is_file($conf['rootpath'] . '/conf/index/favicon.ico')){ + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/standard_index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/standard_index.html_'.substr($conf['language'], 0, 2), $data['new']['document_root'].'/' . $web_folder . '/standard_index.html'); + if(is_file($conf['rootpath'] . '/conf/index/favicon.ico')) { if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/favicon.ico')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/favicon.ico', $data['new']['document_root'].'/' . $web_folder . '/'); } - if(is_file($conf['rootpath'] . '/conf/index/robots.txt')){ + if(is_file($conf['rootpath'] . '/conf/index/robots.txt')) { if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/robots.txt')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/robots.txt', $data['new']['document_root'].'/' . $web_folder . '/'); } } @@ -1195,7 +1169,7 @@ class apache2_plugin { $app->system->chgrp('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log', 'root'); } - //* Write the custom php.ini file, if custom_php_ini fieled is not empty + //* Write the custom php.ini file, if custom_php_ini field is not empty $custom_php_ini_dir = $web_config['website_basedir'].'/conf/'.$data['new']['system_user']; if($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') $custom_php_ini_dir .= '_' . $web_folder; if(!is_dir($web_config['website_basedir'].'/conf')) $app->system->mkdir($web_config['website_basedir'].'/conf'); @@ -1315,7 +1289,6 @@ class apache2_plugin { $tmp = $app->letsencrypt->get_website_certificate_paths($data); $domain = $tmp['domain']; $key_file = $tmp['key']; - $key_file2 = $tmp['key2']; $csr_file = $tmp['csr']; $crt_file = $tmp['crt']; $bundle_file = $tmp['bundle']; @@ -1399,12 +1372,14 @@ class apache2_plugin { $rewrite_rules[] = array('rewrite_domain' => '^'.$this->_rewrite_quote($data['new']['domain']), 'rewrite_type' => ($data['new']['redirect_type'] == 'no')?'':'['.$data['new']['redirect_type'].']', 'rewrite_target' => $rewrite_target, + 'rewrite_target_is_ssl' => ('https://' === substr($rewrite_target, 0, 8) ? 'y' : 'n'), 'rewrite_target_ssl' => $rewrite_target_ssl, 'rewrite_is_url' => ($this->_is_url($rewrite_target) ? 'y' : 'n'), 'rewrite_add_path' => (substr($rewrite_target, -1) == '/' ? 'y' : 'n')); $rewrite_rules[] = array('rewrite_domain' => '^' . $this->_rewrite_quote('www.'.$data['new']['domain']), 'rewrite_type' => ($data['new']['redirect_type'] == 'no')?'':'['.$data['new']['redirect_type'].']', 'rewrite_target' => $rewrite_target, + 'rewrite_target_is_ssl' => ('https://' === substr($rewrite_target, 0, 8) ? 'y' : 'n'), 'rewrite_target_ssl' => $rewrite_target_ssl, 'rewrite_is_url' => ($this->_is_url($rewrite_target) ? 'y' : 'n'), 'rewrite_add_path' => (substr($rewrite_target, -1) == '/' ? 'y' : 'n')); @@ -1413,6 +1388,7 @@ class apache2_plugin { $rewrite_wildcard_rules[] = array( 'rewrite_domain' => '(^|\.)'.$this->_rewrite_quote($data['new']['domain']), 'rewrite_type' => ($data['new']['redirect_type'] == 'no')?'':'['.$data['new']['redirect_type'].']', 'rewrite_target' => $rewrite_target, + 'rewrite_target_is_ssl' => ('https://' === substr($rewrite_target, 0, 8) ? 'y' : 'n'), 'rewrite_target_ssl' => $rewrite_target_ssl, 'rewrite_is_url' => ($this->_is_url($rewrite_target) ? 'y' : 'n'), 'rewrite_add_path' => (substr($rewrite_target, -1) == '/' ? 'y' : 'n')); @@ -1421,6 +1397,7 @@ class apache2_plugin { $rewrite_rules[] = array( 'rewrite_domain' => '^'.$this->_rewrite_quote($data['new']['domain']), 'rewrite_type' => ($data['new']['redirect_type'] == 'no')?'':'['.$data['new']['redirect_type'].']', 'rewrite_target' => $rewrite_target, + 'rewrite_target_is_ssl' => ('https://' === substr($rewrite_target, 0, 8) ? 'y' : 'n'), 'rewrite_target_ssl' => $rewrite_target_ssl, 'rewrite_is_url' => ($this->_is_url($rewrite_target) ? 'y' : 'n'), 'rewrite_add_path' => (substr($rewrite_target, -1) == '/' ? 'y' : 'n')); @@ -1676,7 +1653,7 @@ class apache2_plugin { $custom_php_fpm_ini_dir = $tmp_php['php_fpm_ini_dir']; $custom_php_fpm_init_script = $tmp_php['php_fpm_init_script']; $custom_php_fpm_pool_dir = $tmp_php['php_fpm_pool_dir']; - $custom_php_fpm_socket_dir = $tmp_php['custom_php_fpm_socket_dir']; + $custom_php_fpm_socket_dir = $tmp_php['php_fpm_socket_dir']; if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; } } @@ -1688,7 +1665,7 @@ class apache2_plugin { $custom_php_fpm_ini_dir = $tmp_php['php_fpm_ini_dir']; $custom_php_fpm_init_script = $tmp_php['php_fpm_init_script']; $custom_php_fpm_pool_dir = $tmp_php['php_fpm_pool_dir']; - $custom_php_fpm_socket_dir = $tmp_php['custom_php_fpm_socket_dir']; + $custom_php_fpm_socket_dir = $tmp_php['php_fpm_socket_dir']; if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; } } @@ -2093,17 +2070,12 @@ class apache2_plugin { $app->system->copy($key_file, $key_file.'.err'); $app->system->chmod($key_file.'.err', 0400); } - if(is_file($key_file2)){ - $app->system->copy($key_file2, $key_file2.'.err'); - $app->system->chmod($key_file2.'.err', 0400); - } if(is_file($csr_file)) $app->system->copy($csr_file, $csr_file.'.err'); if(is_file($crt_file)) $app->system->copy($crt_file, $crt_file.'.err'); if(is_file($bundle_file)) $app->system->copy($bundle_file, $bundle_file.'.err'); //* Restore the ~ backup files if(is_file($key_file.'~')) $app->system->copy($key_file.'~', $key_file); - if(is_file($key_file2.'~')) $app->system->copy($key_file2.'~', $key_file2); if(is_file($crt_file.'~')) $app->system->copy($crt_file.'~', $crt_file); if(is_file($csr_file.'~')) $app->system->copy($csr_file.'~', $csr_file); if(is_file($bundle_file.'~')) $app->system->copy($bundle_file.'~', $bundle_file); @@ -2128,7 +2100,6 @@ class apache2_plugin { $this->ssl_certificate_changed = false; if(@is_file($key_file.'~')) $app->system->unlink($key_file.'~'); - if(@is_file($key_file2.'~')) $app->system->unlink($key_file2.'~'); if(@is_file($crt_file.'~')) $app->system->unlink($crt_file.'~'); if(@is_file($csr_file.'~')) $app->system->unlink($csr_file.'~'); if(@is_file($bundle_file.'~')) $app->system->unlink($bundle_file.'~'); @@ -3820,7 +3791,7 @@ class apache2_plugin { } // chroot is used by php-fpm - if (isset($parent_domain['php_fpm_chroot']) && $parent_domain['php_fpm_chroot'] == 'y') { + if (isset($parent_domain['php_fpm_chroot']) && $parent_domain['php_fpm_chroot'] == 'y' && $parent_domain['php'] != 'no') { return; } diff --git a/server/plugins-available/apps_vhost_plugin.inc.php b/server/plugins-available/apps_vhost_plugin.inc.php index b64adfde6e50de8a547fc7638418f2912ea62234..91a994b109555ae704339b06787609c3b0971778 100644 --- a/server/plugins-available/apps_vhost_plugin.inc.php +++ b/server/plugins-available/apps_vhost_plugin.inc.php @@ -206,16 +206,14 @@ class apps_vhost_plugin { $use_socket = '#'; } - /* Check if SSL should be enabled: */ - if(is_file('/usr/local/ispconfig/interface/ssl/ispserver.crt') && is_file('/usr/local/ispconfig/interface/ssl/ispserver.key')) { + /* Check if SSL should be enabled: */ + if(is_file('/usr/local/ispconfig/interface/ssl/ispserver.crt') && is_file('/usr/local/ispconfig/interface/ssl/ispserver.key')) { $content = str_replace('{ssl_comment}', '', $content); - $content = str_replace('{ssl_on}', 'ssl', $content); - $content = str_replace('{vhost_port}', $web_config['apps_vhost_port'], $content); - } else { + $content = str_replace('{ssl_on}', 'ssl http2', $content); + } else { $content = str_replace('{ssl_comment}', '#', $content); $content = preg_replace('/(\s)\{ssl_on\}/', '', $content); - $content = str_replace('{vhost_port}', $web_config['apps_vhost_port'], $content); - } + } $content = str_replace('{use_tcp}', $use_tcp, $content); $content = str_replace('{use_socket}', $use_socket, $content); @@ -253,7 +251,7 @@ class apps_vhost_plugin { file_put_contents("$vhost_conf_dir/apps.vhost", $content); // enabled / disable apps-vhost - $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/000-apps.vhost'; + $vhost_symlink = $vhost_conf_enabled_dir . '/000-apps.vhost'; if(is_link($vhost_symlink) && $web_config['apps_vhost_enabled'] == 'n') { $app->system->unlink($vhost_symlink); } diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index a7bcc2e67890d6cb87833f1c1b922c7439855895..76b358237961017fa919783ef3a779943bd38509 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -208,7 +208,7 @@ class bind_plugin { //* Check for available entropy if (file_get_contents('/proc/sys/kernel/random/entropy_avail') < 200) { - $app->log('DNSSEC ERROR: We are low on entropy. This could cause server script to fail. Please consider installing package haveged.', LOGLEVEL_ERR); + $app->log('DNSSEC ERROR: We are low on entropy. This could cause server script to fail. Please consider installing package haveged.', LOGLEVEL_ERROR); echo "DNSSEC ERROR: We are low on entropy. This could cause server script to fail. Please consider installing package haveged.\n"; return false; } @@ -219,7 +219,7 @@ class bind_plugin { $app->system->exec_safe('cd ?; named-checkzone ? ? | egrep -ho \'[0-9]{10}\'', $dns_config['bind_zonefiles_dir'], $domain, $dns_config['bind_zonefiles_dir'].'/'.$filespre.$domain); $retState = $app->system->last_exec_retcode(); if ($retState != 0) { - $app->log('DNSSEC Error: Error in Zonefile for '.$domain, LOGLEVEL_ERR); + $app->log('DNSSEC Error: Error in Zonefile for '.$domain, LOGLEVEL_ERROR); return false; } @@ -417,12 +417,6 @@ class bind_plugin { if(is_file($zone_file_name.'.err')) unlink($zone_file_name.'.err'); $app->log("Deleting BIND domain file: ".$zone_file_name, LOGLEVEL_DEBUG); - //* DNSSEC-Implementation - if($data['old']['dnssec_initialized'] == 'Y' && file_exists('/usr/local/ispconfig/server/scripts/dnssec-delete.sh')) { - //delete keys - $app->system->exec_safe('/usr/local/ispconfig/server/scripts/dnssec-delete.sh ?', $data['old']['origin']); - } - //* Reload bind nameserver $app->services->restartServiceDelayed('bind', 'reload'); @@ -458,7 +452,7 @@ class bind_plugin { //* Ensure that the named slave directory is writable by the named user $slave_record_dir = $dns_config['bind_zonefiles_dir'].'/'.$this->slave_zone_file_prefix(); - if(!@is_dir($slave_record_dir)) mkdir($slave_record_dir, 0770); + if(!@is_dir($slave_record_dir)) mkdir($slave_record_dir, 0770, true); chown($slave_record_dir, $dns_config['bind_user']); chgrp($slave_record_dir, $dns_config['bind_group']); diff --git a/server/plugins-available/cron_jailkit_plugin.inc.php b/server/plugins-available/cron_jailkit_plugin.inc.php index a186a128867f8d941a4591aa60c35aca72d4eac7..8bd33b3de00fd3853510784770c580666ed4aaef 100644 --- a/server/plugins-available/cron_jailkit_plugin.inc.php +++ b/server/plugins-available/cron_jailkit_plugin.inc.php @@ -339,10 +339,11 @@ class cron_jailkit_plugin { if(!is_dir($this->parent_domain['document_root'].$jailkit_chroot_userhome)) { $app->system->mkdir($this->parent_domain['document_root'].$jailkit_chroot_userhome, 0750, true); - $app->system->chown($this->parent_domain['document_root'].$jailkit_chroot_userhome, $this->parent_domain['system_user']); - $app->system->chgrp($this->parent_domain['document_root'].$jailkit_chroot_userhome, $this->parent_domain['system_group']); } + $app->system->chown($this->parent_domain['document_root'].$jailkit_chroot_userhome, $this->parent_domain['system_user']); + $app->system->chgrp($this->parent_domain['document_root'].$jailkit_chroot_userhome, $this->parent_domain['system_group']); + } function _get_home_dir($username) diff --git a/server/plugins-available/cron_plugin.inc.php b/server/plugins-available/cron_plugin.inc.php index 1d44a849aacf57d5edc6a92c9e8f208e6f275805..331e85f91977a0717d77ecef33ce7563be692cd8 100644 --- a/server/plugins-available/cron_plugin.inc.php +++ b/server/plugins-available/cron_plugin.inc.php @@ -184,12 +184,14 @@ class cron_plugin { if(!$parent_domain) { $tmp = $app->db->queryOneRecord('SELECT * FROM sys_datalog WHERE dbtable = ? AND dbidx = ? AND `action` = ? ORDER BY `datalog_id` DESC', 'web_domain', 'domain_id:' . $data['old']['parent_domain_id'], 'd'); - $tmp = unserialize($tmp); - if($tmp && isset($tmp['old'])) { - $this->parent_domain = $tmp['old']; - } else { - $app->log("Parent domain not found", LOGLEVEL_WARN); - return 0; + if(is_array($tmp) && isset($tmp['data']) && strlen($tmp['data']) > 0) { + $tmp = unserialize($tmp['data']); + if($tmp && isset($tmp['old'])) { + $this->parent_domain = $tmp['old']; + } else { + $app->log("Parent domain not found", LOGLEVEL_WARN); + return 0; + } } } else { $this->parent_domain = $parent_domain; diff --git a/server/plugins-available/mail_plugin.inc.php b/server/plugins-available/mail_plugin.inc.php index fb00166021662088ddbb3697a79dc760e596e4f7..2baf07ec7dd07ad69f7203b77924bb166cf1f8f9 100644 --- a/server/plugins-available/mail_plugin.inc.php +++ b/server/plugins-available/mail_plugin.inc.php @@ -136,7 +136,7 @@ class mail_plugin { $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Trash'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Junk'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Drafts'", $data["new"]["email"]); - + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? INBOX'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Sent'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Trash'", $data["new"]["email"]); @@ -150,26 +150,26 @@ class mail_plugin { $app->log('Created Directory: '.$maildomain_path, LOGLEVEL_DEBUG); $maildomain_path .= '/Maildir'; } - + //* When the mail user dir exists but it is not a valid maildir, move it to corrupted maildir folder if(!empty($maildomain_path) && is_dir($maildomain_path) && !is_dir($maildomain_path.'/new') && !is_dir($maildomain_path.'/cur')) { if(!is_dir($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'])) $app->system->mkdirpath($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']); $app->system->exec_safe("su -c ? vmail", "mv -f " . $data['new']['maildir']." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id']); $app->log('Moved invalid maildir to corrupted Maildirs folder: '.$data['new']['maildir'], LOGLEVEL_WARN); } - + //* Create the maildir, if it doesn not exist, set permissions, set quota. if(!empty($maildomain_path) && !is_dir($maildomain_path)) { - + $app->system->maildirmake($maildomain_path, $user, '', $group); - + //* This is to fix the maildrop quota not being rebuilt after the quota is changed. if($mail_config['pop3_imap_daemon'] != 'dovecot') { if(is_dir($maildomain_path)) $app->system->exec_safe("su -c ? ?", "maildirmake -q ".$data['new']['quota']."S ".$maildomain_path, $user); // Avoid maildirmake quota bug, see debian bug #214911 $app->log('Created Maildir: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".$maildomain_path."' ".$user, LOGLEVEL_DEBUG); } } - + if(!is_dir($data['new']['maildir'].'/.Sent')) { $app->system->maildirmake($maildomain_path, $user, 'Sent', $group); } @@ -182,11 +182,11 @@ class mail_plugin { if(!is_dir($data['new']['maildir'].'/.Junk')) { $app->system->maildirmake($maildomain_path, $user, 'Junk', $group); } - + // Set permissions now recursive $app->system->exec_safe('chown -R ?:? ?', $user, $group, $data['new']['maildir']); $app->log('Set ownership on '.$data['new']['maildir'], LOGLEVEL_DEBUG); - + //* Set the maildir quota if(is_dir($data['new']['maildir'].'/new') && $mail_config['pop3_imap_daemon'] != 'dovecot') { if($data['new']['quota'] > 0) { @@ -263,9 +263,10 @@ class mail_plugin { $additionalParameters = '-f '.$matches[1]; } - // Send the welcome email only on a "master" mail server to avoid duplicate emails + // Send the welcome email only on a "master" mail server to avoid duplicate emails, and only send them when welcome emails are enabled. // (bypass the normal ispcmail class when creating mail accounts) - if($conf['mirror_server_id'] == 0) mail($mailTarget, $mailSubject, $welcome_mail_message, $mailHeaders, $additionalParameters); + $global_config = $app->getconf->get_global_config('mail'); + if($conf['mirror_server_id'] == 0 && $global_config['enable_welcome_mail'] == 'y') mail($mailTarget, $mailSubject, $welcome_mail_message, $mailHeaders, $additionalParameters); } @@ -278,7 +279,7 @@ class mail_plugin { // Maildir-Format must not be changed on this way !! $data['new']['maildir_format'] = $data['old']['maildir_format']; - + $maildomain_path = $data['new']['maildir']; $tmp_basepath = $data['new']['maildir']; $tmp_basepath_parts = explode('/', $tmp_basepath); @@ -332,7 +333,7 @@ class mail_plugin { $app->system->exec_safe('mv -f ? ?'. $data['old']['maildir'], $data['new']['maildir']); $app->log('Moved Maildir from: '.$data['old']['maildir'].' to '.$data['new']['maildir'], LOGLEVEL_DEBUG); } - + //* Create the maildir, if it doesn not exist, set permissions, set quota. if(!is_dir($data['new']['maildir'].'/mdbox')) { $app->system->exec_safe("su -c 'doveadm mailbox create -u ? INBOX'", $data["new"]["email"]); @@ -340,7 +341,7 @@ class mail_plugin { $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Trash'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Junk'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Drafts'", $data["new"]["email"]); - + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? INBOX'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Sent'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Trash'", $data["new"]["email"]); @@ -355,18 +356,18 @@ class mail_plugin { $app->log('Created Directory: '.$base_path, LOGLEVEL_DEBUG); $maildomain_path .= '/Maildir'; } - + //* When the mail user dir exists but it is not a valid maildir, move it to corrupted maildir folder if(!empty($maildomain_path) && is_dir($maildomain_path) && !is_dir($maildomain_path.'/new') && !is_dir($maildomain_path.'/cur')) { if(!is_dir($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'])) $app->system->mkdirpath($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']); $app->system->exec_safe("su -c ? ?", "mv -f ".$data['new']['maildir']." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 'vmail'); $app->log('Moved invalid maildir to corrupted Maildirs folder: '.$data['new']['maildir'], LOGLEVEL_WARN); } - - //* Create the maildir, if it doesn not exist, set permissions, set quota. + + //* Create the maildir, if it does not exist, set permissions, set quota. if(!empty($maildomain_path) && !is_dir($maildomain_path.'/new')) { $app->system->maildirmake($maildomain_path, $user, '', $group); - + //* This is to fix the maildrop quota not being rebuilt after the quota is changed. if($mail_config['pop3_imap_daemon'] != 'dovecot') { if($data['new']['quota'] > 0) { @@ -378,7 +379,7 @@ class mail_plugin { } } } - + if(!is_dir($data['new']['maildir'].'/.Sent')) { $app->system->maildirmake($maildomain_path, $user, 'Sent', $group); } @@ -391,11 +392,11 @@ class mail_plugin { if(!is_dir($data['new']['maildir'].'/.Junk')) { $app->system->maildirmake($maildomain_path, $user, 'Junk', $group); } - + // Set permissions now recursive $app->system->exec_safe('chown -R ?:? ?', $user, $group, $data['new']['maildir']); $app->log('Set ownership on '.$data['new']['maildir'], LOGLEVEL_DEBUG); - + // Move mailbox, if domain has changed and delete old mailbox if($data['new']['maildir'] != $data['old']['maildir'] && is_dir($data['old']['maildir'])) { if(is_dir($data['new']['maildir'])) { @@ -487,7 +488,7 @@ class mail_plugin { } else { $app->log('Possible security violation when deleting the mail domain mailfilter directory: '.$old_maildomain_path, LOGLEVEL_ERROR); } - + //* Delete the mail-backups $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); $backup_dir = $server_config['backup_dir']; diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 73e788ed436d2c50cc8be7a7f0122b80793571e7..0e2cacaef9bfd0da4db665ef3cdc3fe68057461f 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -112,7 +112,6 @@ class nginx_plugin { $ssl_dir = $data['new']['document_root'].'/ssl'; $domain = ($data['new']['ssl_domain'] != '') ? $data['new']['ssl_domain'] : $data['new']['domain']; $key_file = $ssl_dir.'/'.$domain.'.key'; - $key_file2 = $ssl_dir.'/'.$domain.'.key.org'; $csr_file = $ssl_dir.'/'.$domain.'.csr'; $crt_file = $ssl_dir.'/'.$domain.'.crt'; @@ -126,10 +125,6 @@ class nginx_plugin { $app->system->rename($key_file, $key_file.'.bak'); $app->system->chmod($key_file.'.bak', 0400); } - if(file_exists($key_file2)){ - $app->system->rename($key_file2, $key_file2.'.bak'); - $app->system->chmod($key_file2.'.bak', 0400); - } if(file_exists($csr_file)) $app->system->rename($csr_file, $csr_file.'.bak'); if(file_exists($crt_file)) $app->system->rename($crt_file, $crt_file.'.bak'); @@ -179,42 +174,35 @@ class nginx_plugin { $ssl_ext_file = $ssl_dir.'/v3.ext'; $app->system->file_put_contents($ssl_ext_file, $ext_cnf); - $rand_file = $rand_file; - $key_file2 = $key_file2; - $openssl_cmd_key_file2 = $key_file2; - if(substr($domain, 0, 2) == '*.' && strpos($key_file2, '/ssl/\*.') !== false) $key_file2 = str_replace('/ssl/\*.', '/ssl/*.', $key_file2); // wildcard certificate - $key_file = $key_file; $openssl_cmd_key_file = $key_file; if(substr($domain, 0, 2) == '*.' && strpos($key_file, '/ssl/\*.') !== false) $key_file = str_replace('/ssl/\*.', '/ssl/*.', $key_file); // wildcard certificate $ssl_days = 3650; - $csr_file = $csr_file; $openssl_cmd_csr_file = $csr_file; if(substr($domain, 0, 2) == '*.' && strpos($csr_file, '/ssl/\*.') !== false) $csr_file = str_replace('/ssl/\*.', '/ssl/*.', $csr_file); // wildcard certificate $config_file = $ssl_cnf_file; - $crt_file = $crt_file; $openssl_cmd_crt_file = $crt_file; if(substr($domain, 0, 2) == '*.' && strpos($crt_file, '/ssl/\*.') !== false) $crt_file = str_replace('/ssl/\*.', '/ssl/*.', $crt_file); // wildcard certificate if(is_file($ssl_cnf_file) && !is_link($ssl_cnf_file)) { - - $app->system->exec_safe("openssl genrsa -des3 -rand ? -passout pass:? -out ? 2048", $rand_file, $ssl_password, $openssl_cmd_key_file2); - $app->system->exec_safe("openssl req -new -sha256 -passin pass:? -passout pass:? -key ? -out ? -days ? -config ?", $ssl_password, $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_csr_file, $ssl_days, $config_file); - $app->system->exec_safe("openssl rsa -passin pass:? -in ? -out ?", $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_key_file); + $openssl_cmd = 'openssl req -nodes -newkey rsa:4096 -x509 -days ? -keyout ? -out ? -config ?'; + $app->system->exec_safe($openssl_cmd, $ssl_days, $openssl_cmd_key_file, $openssl_cmd_crt_file, $config_file); + $app->system->exec_safe("openssl req -new -sha256 -key ? -out ? -days ? -config ?", $openssl_cmd_key_file, $openssl_cmd_csr_file, $ssl_days, $config_file); if(file_exists($web_config['CA_path'].'/openssl.cnf')) { $app->system->exec_safe("openssl ca -batch -out ? -config ? -passin pass:? -in ? -extfile ?", $openssl_cmd_crt_file, $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $openssl_cmd_csr_file, $ssl_ext_file); $app->log("Creating CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); - if (filesize($crt_file)==0 || !file_exists($crt_file)) $app->log("CA-Certificate signing failed. openssl ca -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file -extfile $ssl_ext_file", LOGLEVEL_ERROR); - }; + if(filesize($crt_file) == 0 || !file_exists($crt_file)) { + $app->log("CA-Certificate signing failed. openssl ca -out $openssl_cmd_crt_file -config " . $web_config['CA_path'] . "/openssl.cnf -passin pass:" . $web_config['CA_pass'] . " -in $openssl_cmd_csr_file -extfile $ssl_ext_file", LOGLEVEL_ERROR); + } + } if (@filesize($crt_file)==0 || !file_exists($crt_file)){ - $app->system->exec_safe("openssl req -x509 -passin pass:? -passout pass:? -key ? -in ? -out ? -days ? -config ?", $ssl_password, $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_csr_file, $openssl_cmd_crt_file, $ssl_days, $config_file); + $app->system->exec_safe($openssl_cmd, $ssl_days, $openssl_cmd_key_file, $openssl_cmd_crt_file, $config_file); $app->log("Creating self-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); - }; + } } - $app->system->chmod($key_file2, 0400); $app->system->chmod($key_file, 0400); @$app->system->unlink($config_file); @$app->system->unlink($rand_file); @@ -276,10 +264,7 @@ class nginx_plugin { $app->system->copy($key_file, $key_file.'~'); $app->system->chmod($key_file.'~', 0400); } - if(file_exists($key_file2)){ - $app->system->copy($key_file2, $key_file2.'~'); - $app->system->chmod($key_file2.'~', 0400); - } + if(file_exists($csr_file)) $app->system->copy($csr_file, $csr_file.'~'); if(file_exists($crt_file)) $app->system->copy($crt_file, $crt_file.'~'); @@ -379,7 +364,7 @@ class nginx_plugin { $app->uses('getconf'); $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); - //* Check if this is a chrooted setup + //* Check if nginx is using a chrooted setup if($web_config['website_basedir'] != '' && @is_file($web_config['website_basedir'].'/etc/passwd')) { $nginx_chrooted = true; $app->log('Info: nginx is chrooted.', LOGLEVEL_DEBUG); @@ -393,7 +378,7 @@ class nginx_plugin { } if($app->system->is_allowed_user($data['new']['system_user'], $app->system->is_user($data['new']['system_user']), true) == false || $app->system->is_allowed_group($data['new']['system_group'], $app->system->is_group($data['new']['system_group']), true) == false) { - $app->log('Websites cannot be owned by the root user or group. User: '.$data['new']['system_user'].' Group: '.$data['new']['system_group'], LOGLEVEL_WARN); + $app->log('Problem with website user or group. Websites cannot be owned by root or an existing user/group. User: '.$data['new']['system_user'].' Group: '.$data['new']['system_group'], LOGLEVEL_WARN); return 0; } if(trim($data['new']['domain']) == '') { @@ -500,7 +485,7 @@ class nginx_plugin { $tmp_symlink = str_replace('[website_domain]', $data['old']['domain'], $tmp_symlink); // Remove trailing slash if(substr($tmp_symlink, -1, 1) == '/') $tmp_symlink = substr($tmp_symlink, 0, -1); - // create the symlinks, if not exist + // remove the old symlinks if they exist if(is_link($tmp_symlink)) { $app->system->exec_safe('rm -f ?', $tmp_symlink); $app->log('Removed symlink: rm -f '.$tmp_symlink, LOGLEVEL_DEBUG); @@ -508,6 +493,9 @@ class nginx_plugin { } } + //* Remove protection of old folders + $app->system->web_folder_protection($data['old']['document_root'], false); + if($data["new"]["type"] != "vhostsubdomain" && $data["new"]["type"] != "vhostalias") { //* Move the site data $tmp_docroot = explode('/', $data['new']['document_root']); @@ -530,9 +518,7 @@ class nginx_plugin { //* Create new base directory, if it does not exist yet if(!is_dir($new_dir)) $app->system->mkdirpath($new_dir); - $app->system->web_folder_protection($data['old']['document_root'], false); $app->system->exec_safe('mv ? ?', $data['old']['document_root'], $new_dir); - //$app->system->rename($data['old']['document_root'],$new_dir); $app->log('Moving site to new document root: mv '.$data['old']['document_root'].' '.$new_dir, LOGLEVEL_DEBUG); // Handle the change in php_open_basedir @@ -552,15 +538,6 @@ class nginx_plugin { if($nginx_chrooted) $app->system->exec_safe('chroot ? ?', $web_config['website_basedir'], $command); //* Change the log mount - /* - $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind'; - $app->system->removeLine('/etc/fstab', $fstab_line); - $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind,nobootwait'; - $app->system->removeLine('/etc/fstab', $fstab_line); - $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind,nobootwait'; - $app->system->removeLine('/etc/fstab', $fstab_line); - */ - $fstab_line_old = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind'; if($web_config['network_filesystem'] == 'y') { @@ -575,8 +552,6 @@ class nginx_plugin { } - //print_r($data); - // Check if the directories are there and create them if necessary. $app->system->web_folder_protection($data['new']['document_root'], false); @@ -626,17 +601,22 @@ class nginx_plugin { $last_updated = array_unique($last_updated, SORT_REGULAR); sort($last_updated, SORT_STRING); $update_hash = hash('md5', implode(' ', $last_updated)); + $check_for_jailkit_updates=false; + + $create_jail_conditions= ($data['old']['php_fpm_chroot'] != 'y' || + ! is_dir($data['new']['document_root'].'/etc/jailkit') || + ($data['old']['php'] != $data['new']['php'] && $data['new']['php'] != 'no')); - // Create jailkit chroot when enabling php_fpm_chroot - if($data['new']['php_fpm_chroot'] == 'y' && $data['old']['php_fpm_chroot'] != 'y') { + // Create jailkit chroot if needed and when enabling php_fpm_chroot + if($data['new']['php_fpm_chroot'] == 'y' && $create_jail_conditions && $data['new']['php'] != 'no') { $website = $app->db->queryOneRecord('SELECT * FROM web_domain WHERE domain_id = ?', $data['new']['domain_id']); $this->website = array_merge($website, $data['new'], array('new_jailkit_hash' => $update_hash)); $this->jailkit_config = $jailkit_config; $this->_setup_jailkit_chroot(); $this->_add_jailkit_user(); - $check_for_jailkit_updates=false; // else delete if unused - } elseif ($data['new']['delete_unused_jailkit'] == 'y' && $data['new']['php_fpm_chroot'] != 'y') { + } elseif (($data['new']['delete_unused_jailkit'] == 'y' && $data['new']['php_fpm_chroot'] != 'y') || + ($data['new']['delete_unused_jailkit'] == 'y' && $data['new']['php'] == 'no')) { $check_for_jailkit_updates=false; $this->_delete_jailkit_if_unused($data['new']['domain_id']); if(is_dir($data['new']['document_root'].'/etc/jailkit')) { @@ -730,7 +710,7 @@ class nginx_plugin { $tmp_symlink = str_replace('[website_domain]', $data['old']['domain'], $tmp_symlink); // Remove trailing slash if(substr($tmp_symlink, -1, 1) == '/') $tmp_symlink = substr($tmp_symlink, 0, -1); - // remove the symlinks, if not exist + // remove the old symlinks if they exist if(is_link($tmp_symlink)) { $app->system->exec_safe('rm -f ?', $tmp_symlink); $app->log('Removed symlink: rm -f '.$tmp_symlink, LOGLEVEL_DEBUG); @@ -791,10 +771,12 @@ class nginx_plugin { $app->system->exec_safe('chmod -R a+r ?', $error_page_path); } - //* Copy the web skeleton files only when there is no index.ph or index.html file yet - if(!file_exists($data['new']['document_root'].'/'.$web_folder.'/index.html') && !file_exists($data['new']['document_root'].'/'.$web_folder.'/index.php')) { + //* Copy the web skeleton files only when there is no index.php, standard_index.html or index.html file yet + if(!file_exists($data['new']['document_root'].'/'.$web_folder.'/index.html') && !file_exists($data['new']['document_root'].'/'.$web_folder.'/index.php') && !file_exists($data['new']['document_root'].'/'.$web_folder.'/standard_index.html')) { if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language'], 0, 2))) { - if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language'], 0, 2), $data['new']['document_root'].'/' . $web_folder . '/index.html'); + if(!file_exists($data['new']['document_root'] . '/' . $web_folder . '/standard_index.html')) { + $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html_' . substr($conf['language'], 0, 2), $data['new']['document_root'] . '/' . $web_folder . '/standard_index.html'); + } if(is_file($conf['rootpath'] . '/conf-custom/index/favicon.ico')) { if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/favicon.ico')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/favicon.ico', $data['new']['document_root'].'/' . $web_folder . '/'); @@ -804,19 +786,23 @@ class nginx_plugin { } } else { if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html')) { - if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html', $data['new']['document_root'].'/' . $web_folder . '/index.html'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/standard_index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html', $data['new']['document_root'].'/' . $web_folder . '/standard_index.html'); } else { - if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/standard_index.html_'.substr($conf['language'], 0, 2), $data['new']['document_root'].'/' . $web_folder . '/index.html'); - if(is_file($conf['rootpath'] . '/conf/index/favicon.ico')){ + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/standard_index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/standard_index.html_'.substr($conf['language'], 0, 2), $data['new']['document_root'].'/' . $web_folder . '/standard_index.html'); + if(is_file($conf['rootpath'] . '/conf/index/favicon.ico')) { if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/favicon.ico')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/favicon.ico', $data['new']['document_root'].'/' . $web_folder . '/'); } - if(is_file($conf['rootpath'] . '/conf/index/robots.txt')){ + if(is_file($conf['rootpath'] . '/conf/index/robots.txt')) { if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/robots.txt')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/robots.txt', $data['new']['document_root'].'/' . $web_folder . '/'); } } } } - $app->system->exec_safe('chmod -R a+r ?', $data['new']['document_root'].'/' . $web_folder . '/'); + // Set the a+r mod to the web_folder. + // Skip this for types where the target vhost already exists if the web_folder is "web". In this case, everything is setup already from the vhost setup + if ( ( $data['new']['type'] != 'vhostalias' && $data['new']['type'] != 'vhostsubdomain' ) || $web_folder != 'web') { + $app->system->exec_safe('chmod -R a+r ?', $data['new']['document_root'].'/' . $web_folder . '/'); + } //** Copy the error documents on update when the error document checkbox has been activated and was deactivated before } elseif ($this->action == 'update' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') && $data['old']['errordocs'] == 0 && $data['new']['errordocs'] == 1) { @@ -871,7 +857,10 @@ class nginx_plugin { if($this->action == 'insert' || $data["new"]["system_user"] != $data["old"]["system_user"]) { // Chown and chmod the directories below the document root - $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $data['new']['document_root'].'/' . $web_folder); + // Skip this for types where the target vhost already exists if the web_folder is "web". In this case, everything is setup already from the vhost setup + if ( ( $data['new']['type'] != 'vhostalias' && $data['new']['type'] != 'vhostsubdomain' ) || $web_folder != 'web') { + $app->system->exec_safe( 'chown -R ?:? ?', $username, $groupname, $data['new']['document_root'] . '/' . $web_folder ); + } // The document root itself has to be owned by root in normal level and by the web owner in security level 20 if($web_config['security_level'] == 20) { $app->system->exec_safe('chown ?:? ?', $username, $groupname, $data['new']['document_root'].'/' . $web_folder); @@ -1367,7 +1356,6 @@ class nginx_plugin { $tmp = $app->letsencrypt->get_website_certificate_paths($data); $domain = $tmp['domain']; $key_file = $tmp['key']; - $key_file2 = $tmp['key2']; $csr_file = $tmp['csr']; $crt_file = $tmp['crt']; $bundle_file = $tmp['bundle']; @@ -1489,7 +1477,7 @@ class nginx_plugin { } } else { // external URL - $rewrite_exclude = '(?!\.well-known/acme-challenge)/'; + $rewrite_exclude = '(?!/(\.well-known/acme-challenge))/'; if($data['new']['redirect_type'] == 'proxy'){ $vhost_data['use_proxy'] = 'y'; $rewrite_subdir = $tmp_redirect_path_parts['path']; @@ -1541,7 +1529,7 @@ class nginx_plugin { } } else { // external URL - $rewrite_exclude = '(?!\.well-known/acme-challenge)/'; + $rewrite_exclude = '(?!/(\.well-known/acme-challenge))/'; if($data['new']['redirect_type'] == 'proxy'){ $vhost_data['use_proxy'] = 'y'; $rewrite_subdir = $tmp_redirect_path_parts['path']; @@ -1591,7 +1579,7 @@ class nginx_plugin { } } else { // external URL - $rewrite_exclude = '(?!\.well-known/acme-challenge)/'; + $rewrite_exclude = '(?!/(\.well-known/acme-challenge))/'; if($data['new']['redirect_type'] == 'proxy'){ $vhost_data['use_proxy'] = 'y'; $rewrite_subdir = $tmp_redirect_path_parts['path']; @@ -2070,8 +2058,7 @@ class nginx_plugin { $ssl_dir = $data['new']['document_root'].'/ssl'; $domain = $data['new']['ssl_domain']; - $key_file = $ssl_dir.'/'.$domain.'.key.org'; - $key_file2 = $ssl_dir.'/'.$domain.'.key'; + $key_file = $ssl_dir.'/'.$domain.'.key'; $csr_file = $ssl_dir.'/'.$domain.'.csr'; $crt_file = $ssl_dir.'/'.$domain.'.crt'; //$bundle_file = $ssl_dir.'/'.$domain.'.bundle'; @@ -2081,17 +2068,12 @@ class nginx_plugin { $app->system->copy($key_file, $key_file.'.err'); $app->system->chmod($key_file.'.err', 0400); } - if(is_file($key_file2)){ - $app->system->copy($key_file2, $key_file2.'.err'); - $app->system->chmod($key_file2.'.err', 0400); - } if(is_file($csr_file)) $app->system->copy($csr_file, $csr_file.'.err'); if(is_file($crt_file)) $app->system->copy($crt_file, $crt_file.'.err'); //if(is_file($bundle_file)) $app->system->copy($bundle_file,$bundle_file.'.err'); //* Restore the ~ backup files if(is_file($key_file.'~')) $app->system->copy($key_file.'~', $key_file); - if(is_file($key_file2.'~')) $app->system->copy($key_file2.'~', $key_file2); if(is_file($crt_file.'~')) $app->system->copy($crt_file.'~', $crt_file); if(is_file($csr_file.'~')) $app->system->copy($csr_file.'~', $csr_file); //if(is_file($bundle_file.'~')) $app->system->copy($bundle_file.'~',$bundle_file); @@ -2111,7 +2093,6 @@ class nginx_plugin { $this->ssl_certificate_changed = false; if(@is_file($key_file.'~')) $app->system->unlink($key_file.'~'); - if(@is_file($key_file2.'~')) $app->system->unlink($key_file2.'~'); if(@is_file($crt_file.'~')) $app->system->unlink($crt_file.'~'); if(@is_file($csr_file.'~')) $app->system->unlink($csr_file.'~'); //if(@is_file($bundle_file.'~')) $app->system->unlink($bundle_file.'~'); @@ -2133,7 +2114,7 @@ class nginx_plugin { if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias') $app->system->web_folder_protection($data['old']['document_root'], false); - //* Check if this is a chrooted setup + //* Check if nginx is using a chrooted setup if($web_config['website_basedir'] != '' && @is_file($web_config['website_basedir'].'/etc/passwd')) { $nginx_chrooted = true; } else { @@ -3597,7 +3578,7 @@ class nginx_plugin { } // chroot is used by php-fpm - if (isset($parent_domain['php_fpm_chroot']) && $parent_domain['php_fpm_chroot'] == 'y') { + if (isset($parent_domain['php_fpm_chroot']) && $parent_domain['php_fpm_chroot'] == 'y' && $parent_domain['php'] != 'no') { return; } diff --git a/server/plugins-available/openvz_plugin.inc.php b/server/plugins-available/openvz_plugin.inc.php index f17edb7b8c1882844b26eb6afb147eba9416075f..4be9c30ebf9b8c9daef2374928a1374d24f4ab8f 100644 --- a/server/plugins-available/openvz_plugin.inc.php +++ b/server/plugins-available/openvz_plugin.inc.php @@ -123,7 +123,7 @@ class openvz_plugin { //* new diskspace for ploop-containers requieres "vzctl set" if($data['new']['diskspace'] != $data['old']['diskspace']) { - escapeshell("vzctl set ? --diskspace ? --save", $veid, $data['new']['diskspace']."G"); + $app->system->exec_safe("vzctl set ? --diskspace ? --save", $veid, $data['new']['diskspace']."G"); } //* Apply config changes to the VM diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index b3e453be555427a5b8845dad5bf3bda347bb112f..8cdb95066bde7cf78a085f9020c62e6dd2e13be0 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -159,11 +159,18 @@ class postfix_server_plugin { } if ($mail_config['reject_sender_login_mismatch'] == 'y') { - array_splice($new_options, 0, 0, array('reject_authenticated_sender_login_mismatch')); - + // insert before permit_mynetworks for ($i = 0; isset($new_options[$i]); $i++) { if ($new_options[$i] == 'permit_mynetworks') { - array_splice($new_options, $i+1, 0, array('reject_sender_login_mismatch')); + array_splice($new_options, $i, 0, array('reject_authenticated_sender_login_mismatch')); + break; + } + } + + // insert before permit_sasl_authenticated + for ($i = 0; isset($new_options[$i]); $i++) { + if ($new_options[$i] == 'permit_sasl_authenticated') { + array_splice($new_options, $i, 0, array('reject_sender_login_mismatch')); break; } } @@ -358,7 +365,8 @@ class postfix_server_plugin { exec("postconf -e 'milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}'"); exec("postconf -e 'milter_default_action = accept'"); - exec("postconf -e 'smtpd_sender_restrictions = ${raslm} permit_mynetworks, ${rslm} permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access proxy:mysql:/etc/postfix/mysql-virtual_sender.cf'"); + exec("postconf -e 'smtpd_sender_restrictions = ${raslm} permit_mynetworks, check_sender_access proxy:mysql:/etc/postfix/mysql-virtual_sender.cf, ${rslm} permit_sasl_authenticated, reject_non_fqdn_sender, reject_unlisted_sender'"); + $new_options = array(); $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); @@ -397,7 +405,7 @@ class postfix_server_plugin { exec("postconf -e 'content_filter = " . ($configure_lmtp ? "lmtp" : "amavis" ) . ":[127.0.0.1]:10024'"); // fixme: should read this from conf templates - exec("postconf -e 'smtpd_sender_restrictions = ${raslm} check_sender_access regexp:/etc/postfix/tag_as_originating.re, permit_mynetworks, ${rslm} permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:/etc/postfix/tag_as_foreign.re, check_sender_access proxy:mysql:/etc/postfix/mysql-virtual_sender.cf'"); + exec("postconf -e 'smtpd_sender_restrictions = ${raslm} check_sender_access regexp:/etc/postfix/tag_as_originating.re, permit_mynetworks, check_sender_access proxy:mysql:/etc/postfix/mysql-virtual_sender.cf, ${rslm} permit_sasl_authenticated, reject_non_fqdn_sender, reject_unlisted_sender, check_sender_access regexp:/etc/postfix/tag_as_foreign.re'"); } } diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php index e9a6cdd633a07d17e9fb3bfd1af4974262ebea9f..112020deb7119f6c1c99dc018737239dfc148274 100644 --- a/server/plugins-available/rspamd_plugin.inc.php +++ b/server/plugins-available/rspamd_plugin.inc.php @@ -120,10 +120,14 @@ class rspamd_plugin { $app->plugins->registerEvent('mail_access_update', $this->plugin_name, 'spamfilter_wblist_update'); $app->plugins->registerEvent('mail_access_delete', $this->plugin_name, 'spamfilter_wblist_delete'); + //* server + $app->plugins->registerEvent('server_insert', $this->plugin_name, 'server_update'); + $app->plugins->registerEvent('server_update', $this->plugin_name, 'server_update'); + //* server ip - $app->plugins->registerEvent('server_ip_insert', $this->plugin_name, 'server_ip'); - $app->plugins->registerEvent('server_ip_update', $this->plugin_name, 'server_ip'); - $app->plugins->registerEvent('server_ip_delete', $this->plugin_name, 'server_ip'); + $app->plugins->registerEvent('server_ip_insert', $this->plugin_name, 'server_update'); + $app->plugins->registerEvent('server_ip_update', $this->plugin_name, 'server_update'); + $app->plugins->registerEvent('server_ip_delete', $this->plugin_name, 'server_update'); //* spamfilter_users $app->plugins->registerEvent('spamfilter_users_insert', $this->plugin_name, 'user_settings_update'); @@ -139,7 +143,7 @@ class rspamd_plugin { $app->plugins->registerEvent('mail_forwarding_delete', $this->plugin_name, 'user_settings_update'); } - function user_settings_update($event_name, $data) { + function user_settings_update($event_name, $data, $internal = false) { global $app, $conf; if(!is_dir('/etc/rspamd')) { @@ -200,12 +204,31 @@ class rspamd_plugin { $is_domain = true; } + $app->log("rspamd: user_settings_update() for $type $email_address", LOGLEVEL_DEBUG); + if($settings_name == '') { // missing settings file name $app->log('Empty rspamd identifier in rspamd_plugin from identifier: ' . $use_data . '/' . $identifier, LOGLEVEL_WARN); return; } + $entries_to_update = [ + 'mail_user' => [], + 'mail_forwarding' => [] + ]; + if($is_domain === true) { + // get all child records to update / delete + $mailusers = $app->db->queryAllRecords("SELECT mu.* FROM mail_user as mu LEFT JOIN spamfilter_users as su ON (su.email = mu.email) WHERE mu.email LIKE ? AND su.id IS NULL", '%' . $email_address); + if(is_array($mailusers) && !empty($mailusers)) { + $entries_to_update['mail_user'] = $mailusers; + } + + $forwardings = $app->db->queryAllRecords("SELECT mf.* FROM mail_forwarding as mf LEFT JOIN spamfilter_users as su ON (su.email = mf.source) WHERE mf.source LIKE ? AND su.id IS NULL", '%_' . $email_address); + if(is_array($forwardings) && !empty($forwardings)) { + $entries_to_update['mail_forwarding'] = $forwardings; + } + } + $old_settings_name = $settings_name; $settings_name = $app->functions->idn_encode($settings_name); @@ -224,16 +247,20 @@ class rspamd_plugin { unlink($settings_file); } } else { - $settings_priority = 20; if(isset($data[$use_data]['priority'])) { - $settings_priority = intval($data[$use_data]['priority']); - } elseif($is_domain === true) { - $settings_priority = 18; + $settings_priority = ($is_domain ? 10 : 20) + intval($data[$use_data]['priority']); + } else { + $settings_priority = ($is_domain ? 10 : 20) + 5; } // get policy for entry if($type === 'spamfilter_user') { - $policy = $app->db->queryOneRecord("SELECT * FROM spamfilter_policy WHERE id = ?", intval($data['new']['policy_id'])); + if (intval($data['new']['policy_id']) > 0) { + $policy = $app->db->queryOneRecord("SELECT * FROM spamfilter_policy WHERE id = ?", intval($data['new']['policy_id'])); + } else { + $domain = substr($data['new']['email'], strpos($data['new']['email'], '@')); + $policy = $app->db->queryOneRecord("SELECT p.* FROM spamfilter_users as u INNER JOIN spamfilter_policy as p ON (p.id = u.policy_id) WHERE u.server_id = ? AND u.email = ?", $conf['server_id'], $domain); + } $check = $app->db->queryOneRecord('SELECT `greylisting` FROM `mail_user` WHERE `server_id` = ? AND `email` = ? UNION SELECT `greylisting` FROM `mail_forwarding` WHERE `server_id` = ? AND `source` = ? ORDER BY (`greylisting` = ?) DESC', $conf['server_id'], $email_address, $conf['server_id'], $email_address, 'y'); if($check) { @@ -254,7 +281,7 @@ class rspamd_plugin { $app->system->mkdirpath($this->users_config_dir); } - if(!$this->isValidEmail($app->functions->idn_encode($email_address))) { + if((!$this->isValidEmail($app->functions->idn_encode($email_address))) || intval($data['new']['policy_id']) == 0) { if(is_file($settings_file)) { unlink($settings_file); } @@ -263,7 +290,11 @@ class rspamd_plugin { $app->load('tpl'); $tpl = new tpl(); - $tpl->newTemplate('rspamd_users.inc.conf.master'); + if (file_exists($conf['rootpath']."/conf-custom/install/rspamd_users.inc.conf.master")) { + $tpl->newTemplate($conf['rootpath']."/conf-custom/install/rspamd_users.inc.conf.master"); + } else { + $tpl->newTemplate("rspamd_users.inc.conf.master"); + } $tpl->setVar('record_identifier', 'ispc_' . $type . '_' . $entry_id); $tpl->setVar('priority', $settings_priority); @@ -274,11 +305,13 @@ class rspamd_plugin { } else { $tpl->setVar('from_email', $app->functions->idn_encode($email_address)); } + // unneded? $spamfilter appears unused $spamfilter = $data[$use_data]; } else { $tpl->setVar('to_email', $app->functions->idn_encode($email_address)); // need to get matching spamfilter user if any + // unneded? $spamfilter appears unused $spamfilter = $app->db->queryOneRecord('SELECT * FROM spamfilter_users WHERE `email` = ?', $email_address); } @@ -319,7 +352,16 @@ class rspamd_plugin { } } - if($mail_config['content_filter'] == 'rspamd'){ + if($is_domain === true) { + foreach($entries_to_update['mail_user'] as $entry) { + $this->user_settings_update('mail_user_' . $mode, ['old' => $entry, 'new' => $entry], true); + } + foreach($entries_to_update['mail_forwarding'] as $entry) { + $this->user_settings_update('mail_forwarding_' . $mode, ['old' => $entry, 'new' => $entry], true); + } + } + + if($internal !== true && $mail_config['content_filter'] == 'rspamd'){ $app->services->restartServiceDelayed('rspamd', 'reload'); } } @@ -354,6 +396,7 @@ class rspamd_plugin { } else { $record_id = intval($data['new']['wblist_id']); $wblist_file = $this->users_config_dir.'spamfilter_wblist_'.$record_id.'.conf'; + $tmp = $app->db->queryOneRecord("SELECT email FROM spamfilter_users WHERE id = ?", intval($data['new']['rid'])); if($tmp && !empty($tmp)) { $filter = array( @@ -402,11 +445,16 @@ class rspamd_plugin { } } else { $tpl = new tpl(); - $tpl->newTemplate('rspamd_wblist.inc.conf.master'); + if (file_exists($conf['rootpath']."/conf-custom/install/rspamd_wblist.inc.conf.master")) { + $tpl->newTemplate($conf['rootpath']."/conf-custom/install/rspamd_wblist.inc.conf.master"); + } else { + $tpl->newTemplate("rspamd_wblist.inc.conf.master"); + } + $tpl->setVar('list_scope', ($global_filter ? 'global' : 'spamfilter')); $tpl->setVar('record_id', $record_id); - // we need to add 10 to priority to avoid mailbox/domain spamfilter settings overriding white/blacklists - $tpl->setVar('priority', intval($data['new']['priority']) + ($global_filter ? 10 : 20)); + // add 30/40 to priority to avoid collisions and prefer white/blacklists above mailbox/domain spamfilter settings + $tpl->setVar('priority', intval($data['new']['priority']) + ($global_filter ? 30 : 40)); $tpl->setVar('from', $filter_from); $tpl->setVar('recipient', $filter_rcpt); $tpl->setVar('hostname', $filter['hostname']); @@ -419,7 +467,7 @@ class rspamd_plugin { unlink($wblist_file); } - if($mail_config['content_filter'] == 'rspamd' && is_file('/etc/init.d/rspamd')) { + if($mail_config['content_filter'] == 'rspamd') { $app->services->restartServiceDelayed('rspamd', 'reload'); } } @@ -443,38 +491,69 @@ class rspamd_plugin { } if($mail_config['content_filter'] == 'rspamd'){ - if(is_file('/etc/init.d/rspamd')) $app->services->restartServiceDelayed('rspamd', 'reload'); + $app->services->restartServiceDelayed('rspamd', 'reload'); } } } - function server_ip($event_name, $data) { + function server_update($event_name, $data) { global $app, $conf; - // get the config - $app->uses("getconf,system"); + if(!is_dir('/etc/rspamd')) { + return; + } + $app->load('tpl'); $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); - if(is_dir('/etc/rspamd')) { + $local_addrs = array(); + $ips = $app->db->queryAllRecords('SELECT `ip_address`, `ip_type` FROM ?? WHERE `server_id` = ?', $conf['mysql']['database'].'.server_ip', $conf['server_id']); + if(is_array($ips) && !empty($ips)){ + foreach($ips as $ip){ + $local_addrs[] = array( + 'ip' => $ip['ip_address'], + 'quoted_ip' => "\"".$ip['ip_address']."\",\n", + ); + } + } + + # local.d templates with template tags + # note: ensure these template files are in server/conf/ and symlinked in install/tpl/ + $local_d = array( + 'dkim_signing.conf', + 'options.inc', + 'redis.conf', + 'classifier-bayes.conf', + ); + foreach ($local_d as $f) { $tpl = new tpl(); - $tpl->newTemplate('rspamd_users.conf.master'); + if (file_exists($conf['rootpath']."/conf-custom/install/rspamd_${f}.master")) { + $tpl->newTemplate($conf['rootpath']."/conf-custom/install/rspamd_${f}.master"); + } else { + $tpl->newTemplate("rspamd_${f}.master"); + } - $whitelist_ips = array(); - $ips = $app->db->queryAllRecords("SELECT * FROM server_ip WHERE server_id = ?", $conf['server_id']); - if(is_array($ips) && !empty($ips)){ - foreach($ips as $ip){ - $whitelist_ips[] = array('ip' => $ip['ip_address']); - } + $tpl->setVar('dkim_path', $mail_config['dkim_path']); + $tpl->setVar('rspamd_redis_servers', $mail_config['rspamd_redis_servers']); + $tpl->setVar('rspamd_redis_password', $mail_config['rspamd_redis_password']); + $tpl->setVar('rspamd_redis_bayes_servers', $mail_config['rspamd_redis_bayes_servers']); + $tpl->setVar('rspamd_redis_bayes_password', $mail_config['rspamd_redis_bayes_password']); + if(count($local_addrs) > 0) { + $tpl->setLoop('local_addrs', $local_addrs); } - $tpl->setLoop('whitelist_ips', $whitelist_ips); - $app->system->file_put_contents('/etc/rspamd/local.d/users.conf', $tpl->grab()); + + $app->system->file_put_contents("/etc/rspamd/local.d/${f}", $tpl->grab()); if($mail_config['content_filter'] == 'rspamd'){ $app->services->restartServiceDelayed('rspamd', 'reload'); } } + + # protect passwords in these files + exec('chgrp _rspamd /etc/rspamd/local.d/redis.conf /etc/rspamd/local.d/classifier-bayes.conf /etc/rspamd/local.d/worker-controller.inc'); + exec('chmod 640 /etc/rspamd/local.d/redis.conf /etc/rspamd/local.d/classifier-bayes.conf /etc/rspamd/local.d/worker-controller.inc'); + } private function _is_valid_ip_address($ip) { diff --git a/server/plugins-available/software_update_plugin.inc.php b/server/plugins-available/software_update_plugin.inc.php index 211951685df5cda1b0e35ce834ec08d677e782d6..18db6dffac871b6cb938683c08fde155c538e6d5 100644 --- a/server/plugins-available/software_update_plugin.inc.php +++ b/server/plugins-available/software_update_plugin.inc.php @@ -39,243 +39,16 @@ class software_update_plugin { global $conf; return true; - } - /* This function is called when the plugin is loaded */ public function onLoad() { global $app; - - /* - Register for the events - */ - - $app->plugins->registerEvent('software_update_inst_insert', $this->plugin_name, 'process'); - //$app->plugins->registerEvent('software_update_inst_update',$this->plugin_name,'process'); - //$app->plugins->registerEvent('software_update_inst_delete',$this->plugin_name,'process'); - //* Register for actions $app->plugins->registerAction('os_update', $this->plugin_name, 'os_update'); - - - } - - private function set_install_status($inst_id, $status) { - global $app; - - $app->db->query("UPDATE software_update_inst SET status = ? WHERE software_update_inst_id = ?", $status, $inst_id); - $app->dbmaster->query("UPDATE software_update_inst SET status = ? WHERE software_update_inst_id = ?", $status, $inst_id); - } - - public function process($event_name, $data) { - global $app, $conf; - - //* Get the info of the package: - $software_update_id = intval($data["new"]["software_update_id"]); - $software_update = $app->db->queryOneRecord("SELECT * FROM software_update WHERE software_update_id = ?", $software_update_id); - $software_package = $app->db->queryOneRecord("SELECT * FROM software_package WHERE package_name = ?", $software_update['package_name']); - - if($software_package['package_type'] == 'ispconfig' && !$conf['software_updates_enabled'] == true) { - $app->log('Software Updates not enabled on this server. To enable updates, set $conf["software_updates_enabled"] = true; in config.inc.php', LOGLEVEL_WARN); - $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); - return false; - } - - $installuser = ''; - if($software_package['package_type'] == 'ispconfig') { - $installuser = ''; - } elseif ($software_package['package_type'] == 'app') { - $installuser = 'ispapps'; - } else { - $app->log('package_type not supported', LOGLEVEL_WARN); - $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); - return false; - } - - $temp_dir = '/tmp/'.md5(uniqid(rand())); - $app->log("The temp dir is $temp_dir", LOGLEVEL_DEBUG); - mkdir($temp_dir); - if($installuser != '') chown($temp_dir, $installuser); - - if(!is_dir($temp_dir)) { - $app->log("Unable to create temp directory.", LOGLEVEL_WARN); - $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); - return false; - } - - //* Replace placeholders in download URL - $software_update["update_url"] = str_replace('{key}', $software_package['package_key'], $software_update["update_url"]); - - //* Download the update package - if($installuser == '') { - $cmd = "cd ? && wget ?"; - $app->system->exec_safe($cmd, $temp_dir, $software_update["update_url"]); - } else { - $cmd = "cd $temp_dir && wget ".$software_update["update_url"]; - $app->system->exec_safe("su -c ? ?", $cmd, $installuser); - } - $app->log("Downloading the update file from: ".$software_update["update_url"], LOGLEVEL_DEBUG); - - //$url_parts = parse_url($software_update["update_url"]); - //$update_filename = basename($url_parts["path"]); - //* Find the name of the zip file which contains the app. - $tmp_dir_handle = dir($temp_dir); - $update_filename = ''; - while (false !== ($t = $tmp_dir_handle->read())) { - if($t != '.' && $t != '..' && is_file($temp_dir.'/'.$t) && substr($t, -4) == '.zip') { - $update_filename = $t; - } - } - $tmp_dir_handle->close(); - unset($tmp_dir_handle); - unset($t); - - if($update_filename == '') { - $app->log("No package file found. Download failed? Installation aborted.", LOGLEVEL_WARN); - $app->system->exec_safe("rm -rf ?", $temp_dir); - $app->log("Deleting the temp directory $temp_dir", LOGLEVEL_DEBUG); - $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); - return false; - } - - $app->log("The update filename is $update_filename", LOGLEVEL_DEBUG); - - if(is_file($temp_dir.'/'.$update_filename)) { - - //* Checking the md5sum - if(md5_file($temp_dir.'/'.$update_filename) != $software_update["update_md5"]) { - $app->log("The md5 sum of the downloaded file is incorrect. Update aborted.", LOGLEVEL_WARN); - $app->system->exec_safe("rm -rf ", $temp_dir); - $app->log("Deleting the temp directory $temp_dir", LOGLEVEL_DEBUG); - $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); - return false; - } else { - $app->log("MD5 checksum of the downloaded file verified.", LOGLEVEL_DEBUG); - } - - - //* unpacking the update - - if($installuser == '') { - $cmd = "cd ? && unzip ?"; - $app->system->exec_safe($cmd, $temp_dir, $update_filename); - } else { - $cmd = "cd $temp_dir && unzip $update_filename"; - $app->system->exec_safe("su -c ? ?", $cmd, $installuser); - } - - //* Create a database, if the package requires one - if($software_package['package_type'] == 'app' && $software_package['package_requires_db'] == 'mysql') { - - $app->uses('ini_parser'); - $package_config = $app->ini_parser->parse_ini_string(stripslashes($software_package['package_config'])); - - $this->create_app_db($package_config['mysql']); - $app->log("Creating the app DB.", LOGLEVEL_DEBUG); - - //* Load the sql dump into the database - if(is_file($temp_dir.'/setup.sql')) { - $db_config = $package_config['mysql']; - if( $db_config['database_user'] != '' && - $db_config['database_password'] != '' && - $db_config['database_name'] != '' && - $db_config['database_host'] != '') { - $app->system->exec_safe("mysql --default-character-set=utf8 --force -h ? -u ? ? < ?", $db_config['database_host'], $db_config['database_user'], $db_config['database_name'], $temp_dir.'/setup.sql'); - $app->log("Loading setup.sql dump into the app db.", LOGLEVEL_DEBUG); - } - } - - } - - //* Save the package config file as app.ini - if($software_package['package_config'] != '') { - file_put_contents($temp_dir.'/app.ini', $software_package['package_config']); - $app->log("Writing ".$temp_dir.'/app.ini', LOGLEVEL_DEBUG); - } - - if(is_file($temp_dir.'/setup.sh')) { - // Execute the setup script - $app->system->exec_safe('chmod +x ?', $temp_dir.'/setup.sh'); - $app->log("Executing setup.sh file in directory $temp_dir", LOGLEVEL_DEBUG); - - if($installuser == '') { - $cmd = 'cd ? && ./setup.sh > package_install.log'; - $app->system->exec_safe($cmd, $temp_dir); - } else { - $cmd = 'cd '.$temp_dir.' && ./setup.sh > package_install.log'; - $app->system->exec_safe("su -c ? ?", $cmd, $installuser); - } - - $log_data = @file_get_contents("{$temp_dir}/package_install.log"); - if(preg_match("'.*\[OK\]\s*$'is", $log_data)) { - $app->log("Installation successful", LOGLEVEL_DEBUG); - $app->log($log_data, LOGLEVEL_DEBUG); - $this->set_install_status($data["new"]["software_update_inst_id"], "installed"); - } else { - $app->log("Installation failed:\n\n" . $log_data, LOGLEVEL_WARN); - $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); - } - } else { - $app->log("setup.sh file not found", LOGLEVEL_ERROR); - $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); - } - } else { - $app->log("Download of the update file failed", LOGLEVEL_WARN); - $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); - } - - if($temp_dir != '' && $temp_dir != '/') $app->system->exec_safe("rm -rf ?", $temp_dir); - $app->log("Deleting the temp directory $temp_dir", LOGLEVEL_DEBUG); - } - - private function create_app_db($db_config) { - global $app, $conf; - - if( $db_config['database_user'] != '' && - $db_config['database_password'] != '' && - $db_config['database_name'] != '' && - $db_config['database_host'] != '') { - - if(!include ISPC_LIB_PATH.'/mysql_clientdb.conf') { - $app->log('Unable to open'.ISPC_LIB_PATH.'/mysql_clientdb.conf', LOGLEVEL_ERROR); - return; - } - - if($db_config['database_user'] == 'root') { - $app->log('User root not allowed for App databases', LOGLEVEL_WARNING); - return; - } - - //* Connect to the database - $link = mysqli_connect($clientdb_host, $clientdb_user, $clientdb_password); - if (!$link) { - $app->log('Unable to connect to the database'.mysqli_connect_error(), LOGLEVEL_ERROR); - return; - } - - $query_charset_table = ''; - - //* Create the new database - if (mysqli_query($link,'CREATE DATABASE '.mysqli_real_escape_string($link, $db_config['database_name']).$query_charset_table, $link)) { - $app->log('Created MySQL database: '.$db_config['database_name'], LOGLEVEL_DEBUG); - } else { - $app->log('Unable to connect to the database'.mysqli_error($link), LOGLEVEL_ERROR); - } - - if(mysqli_query("GRANT ALL ON ".mysqli_real_escape_string($link, $db_config['database_name']).".* TO '".mysqli_real_escape_string($link, $db_config['database_user'])."'@'".$db_config['database_host']."' IDENTIFIED BY '".mysqli_real_escape_string($link, $db_config['database_password'])."';", $link)) { - $app->log('Created MySQL user: '.$db_config['database_user'], LOGLEVEL_DEBUG); - } else { - $app->log('Unable to create database user'.$db_config['database_user'].' '.mysqli_error($link), LOGLEVEL_ERROR); - } - - mysqli_close($link); - - } - } //* Operating system update diff --git a/server/plugins-available/webserver_plugin.inc.php b/server/plugins-available/webserver_plugin.inc.php index 0873826bde4de220e63b8533f965a7f08e511efd..bb884a6e2b18df73165965cab96a89fbde8cbed7 100644 --- a/server/plugins-available/webserver_plugin.inc.php +++ b/server/plugins-available/webserver_plugin.inc.php @@ -28,6 +28,13 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* compatibility for php < 5.5 (centos 7), remove when no longer needed */ +if(!function_exists("array_column")){ + function array_column($array,$column_name){ + return array_map(function($element) use($column_name){return $element[$column_name];}, $array); + } +} + class webserver_plugin { var $plugin_name = 'webserver_plugin'; @@ -37,8 +44,6 @@ class webserver_plugin { * This function is called during ispconfig installation to determine * if a symlink shall be created for this plugin. */ - - public function onInstall() { global $conf; @@ -56,7 +61,11 @@ class webserver_plugin { global $app; $app->plugins->registerAction('server_plugins_loaded', $this->plugin_name, 'check_phpini_changes'); + $app->plugins->registerEvent('server_update', $this->plugin_name, 'server_update'); + + $app->plugins->registerEvent('server_php_insert', $this->plugin_name, 'server_php_update'); + $app->plugins->registerEvent('server_php_update', $this->plugin_name, 'server_php_update'); } /** @@ -92,10 +101,6 @@ class webserver_plugin { 'mode' => 'mod', 'php_version' => 0); // default; - $check_files[] = array('file' => $web_config['php_ini_path_cgi'], - 'mode' => '', // all but 'mod' and 'fast-cgi' - 'php_version' => 0); // default; - if($fastcgi_config["fastcgi_phpini_path"] && $fastcgi_config["fastcgi_phpini_path"] != $web_config['php_ini_path_cgi']) { $check_files[] = array('file' => $fastcgi_config["fastcgi_phpini_path"], 'mode' => 'fast-cgi', @@ -106,6 +111,16 @@ class webserver_plugin { 'php_version' => 0); // default; } + $check_files[] = array('file' => $web_config['php_fpm_ini_path'], + 'mode' => 'php-fpm', + 'php_version' => 0); // default; + + if(!array_search($web_config['php_ini_path_cgi'], array_column($check_files, 'file'))) { + $check_files[] = array('file' => $web_config['php_ini_path_cgi'], + 'mode' => '', // all but 'mod' and 'fast-cgi' + 'php_version' => 0); // default; + } + //** read additional php versions of this server $php_versions = $app->db->queryAllRecords('SELECT server_php_id, php_fastcgi_ini_dir, php_fpm_ini_dir FROM server_php WHERE server_id = ?', $conf['server_id']); @@ -114,7 +129,8 @@ class webserver_plugin { $check_files[] = array('file' => $php['php_fastcgi_ini_dir'] . '/php.ini', 'mode' => 'fast-cgi', 'php_version' => $php['server_php_id']); - } elseif($php['php_fpm_ini_dir'] && $php['php_fpm_ini_dir'] . '/php.ini' != $web_config['php_ini_path_cgi']) { + } + if($php['php_fpm_ini_dir'] && $php['php_fpm_ini_dir'] . '/php.ini' != $web_config['php_fpm_ini_path']) { $check_files[] = array('file' => $php['php_fpm_ini_dir'] . '/php.ini', 'mode' => 'php-fpm', 'php_version' => $php['server_php_id']); @@ -134,6 +150,13 @@ class webserver_plugin { } if(!is_array($php_ini_md5)) $php_ini_md5 = array(); + // verify needed php file settings if that hasn't been done since 15 minutes + $now = time(); + $verify_php_ini=false; + if(!isset($php_ini_md5['last_verify_php_ini']) || ($now - intval($php_ini_md5['last_verify_php_ini']) > 15*60)) { + $verify_php_ini=true; + } + $processed = array(); foreach($check_files as $file) { $file_path = $file['file']; @@ -145,6 +168,11 @@ class webserver_plugin { if(in_array($ident, $processed) == true) continue; $processed[] = $ident; + //** check that needed php.ini settings/changes are made + if($verify_php_ini) { + $this->verify_php_ini($file); + } + //** check if md5sum of file changed $file_md5 = md5_file($file_path); if(array_key_exists($file_path, $php_ini_md5) == false || $php_ini_md5[$file_path] != $file_md5) { @@ -158,13 +186,62 @@ class webserver_plugin { $new_php_ini_md5[$file_path] = $file_md5; } + $new_php_ini_md5['last_verify_php_ini'] = time(); + //** write new md5 sums if something changed - if($php_ini_changed == true) $app->system->file_put_contents(SCRIPT_PATH . '/temp/php.ini.md5sum', base64_encode(serialize($new_php_ini_md5))); + if($php_ini_changed == true || $verify_php_ini == true) $app->system->file_put_contents(SCRIPT_PATH . '/temp/php.ini.md5sum', base64_encode(serialize($new_php_ini_md5))); unset($new_php_ini_md5); unset($php_ini_md5); unset($processed); } + /** + * The method runs each php.ini file through verify_php_ini() + */ + function server_php_update($event_name, $data) { + global $app, $conf; + + if(isset($data['new']['php_fastcgi_ini_dir'])) { + $php_ini = $data['new']['php_fastcgi_ini_dir'] . '/php.ini'; + if(file_exists($php_ini)) { + $this->verify_php_ini(array('file' => $php_ini, + 'mode' => 'fast-cgi', + 'php_version' => $data['new']['server_php_id']) + ); + } else { + $app->log("Cannot verify php.ini, file not found: $php_ini", LOGLEVEL_WARN); + } + } + if(isset($data['new']['php_fpm_ini_dir'])) { + $php_ini = $data['new']['php_fpm_ini_dir'] . '/php.ini'; + if(file_exists($php_ini)) { + $this->verify_php_ini(array('file' => $php_ini, + 'mode' => 'php-fpm', + 'php_version' => $data['new']['server_php_id']) + ); + } else { + $app->log("Cannot verify php.ini, file not found: $php_ini", LOGLEVEL_WARN); + } + } + } + + /** + * The method checks/sets needed php.ini settings + */ + public function verify_php_ini($file) { + global $app; + + if(isset($file['file']) && is_file($file['file'])) { + $php_ini = $file['file']; + // ensure opcache.validate_root = 1 + $app->system->exec_safe('grep ^opcache.validate_root ?', $php_ini); + if($app->system->last_exec_retcode() != 0) { + $app->log('verify_php_ini(): php.ini '.$php_ini.' is missing validate_root', LOGLEVEL_DEBUG); + $sed_script='s/; *opcache\.validate_root *= *.+$/opcache.validate_root = 1/g'; + $app->system->exec_safe('sed -E -i ? ?', $sed_script, $php_ini); + } + } + } /* * Checks for changes to jailkit settings in server config and schedules affected jails to be updated. @@ -245,7 +322,32 @@ class webserver_plugin { } } } + + $check_files = array(); + if ($old['php_ini_path_apache'] != $new['php_ini_path_apache']) { + $check_files[] = array('file' => $new['php_ini_path_apache'], + 'mode' => 'mod', + 'php_version' => 0); + } + + if ($old['fastcgi_phpini_path'] != $new['fastcgi_phpini_path']) { + $check_files[] = array('file' => $new['fastcgi_phpini_path'], + 'mode' => 'fast-cgi', + 'php_version' => 0); + } + if ($old['php_ini_path_cgi'] != $new['php_ini_path_cgi']) { + $check_files[] = array('file' => $new['php_ini_path_cgi'], + 'mode' => 'fast-cgi', + 'php_version' => 0); + } + if ($old['php_fpm_ini_path'] != $new['php_fpm_ini_path']) { + $check_files[] = array('file' => $web_config['php_fpm_ini_path'], + 'mode' => 'php-fpm', + 'php_version' => 0); + } + foreach ($check_files as $file) { + $this->verify_php_ini($file); + } } } -?> diff --git a/server/scripts/letsencrypt_renew_hook.sh b/server/scripts/letsencrypt_renew_hook.sh index 53fc31befd65af69b245347358de7f13c3938f6b..63100ed6503808bd5d34c5d42ecf153197251b35 100644 --- a/server/scripts/letsencrypt_renew_hook.sh +++ b/server/scripts/letsencrypt_renew_hook.sh @@ -12,8 +12,12 @@ ## If you need a custom hook file, create a file with the same name in ## /usr/local/ispconfig/server/conf-custom/scripts/ +## +## End the file with 'return 124' to signal that this script should not terminate. if [ -e "/usr/local/ispconfig/server/conf-custom/scripts/letsencrypt_renew_hook.sh" ] ; then - . /usr/local/ispconfig/server/conf-custom/scripts/letsencrypt_renew_hook.sh && exit 0 || exit 1; + . /usr/local/ispconfig/server/conf-custom/scripts/letsencrypt_renew_hook.sh + ret=$? + if [ $ret != 124 ]; then exit $ret; fi fi hostname=$(hostname -f) @@ -52,4 +56,4 @@ if [ -d "$lelive" ]; then if [ $(dpkg-query -W -f='${Status}' nginx 2>/dev/null | grep -c "ok installed") -eq 1 ]; then service nginx restart; fi if [ $(dpkg-query -W -f='${Status}' apache2 2>/dev/null | grep -c "ok installed") -eq 1 ]; then service apache2 restart; fi fi -else echo `/bin/date` "Your Lets Encrypt SSL certs path for your ISPConfig server FQDN is missing.$line" >> /var/log/ispconfig/ispconfig.log; fi \ No newline at end of file +else echo `/bin/date` "Your Lets Encrypt SSL certs path for your ISPConfig server FQDN is missing.$line" >> /var/log/ispconfig/ispconfig.log; fi diff --git a/server/scripts/update_runner.sh b/server/scripts/update_runner.sh index 5647272f3a4831ea661aa2b064d49db710de641b..f3eb684328875efb4fc03ee0cdd45bc16afc885d 100644 --- a/server/scripts/update_runner.sh +++ b/server/scripts/update_runner.sh @@ -26,7 +26,7 @@ if [[ "$SOURCE" == "stable" ]] ; then elif [[ "$SOURCE" == "nightly" ]] ; then URL="https://www.ispconfig.org/downloads/ISPConfig-3-nightly.tar.gz" elif [[ "$SOURCE" == "git-develop" ]] ; then - URL="https://git.ispconfig.org/ispconfig/ispconfig3/repository/archive.tar.gz?ref=develop" + URL="https://git.ispconfig.org/ispconfig/ispconfig3/-/archive/develop/ispconfig3-develop.tar.gz" else echo "Please choose an installation source (stable, nightly, git-develop)" exit 1 @@ -40,19 +40,23 @@ cd /tmp if [ -n "${_UPD}" ] then { + save_umask=`umask` umask 0077 \ && tmpdir=`mktemp -dt "$(basename $0).XXXXXXXXXX"` \ && test -d "${tmpdir}" \ && cd "${tmpdir}" + umask $save_umask } || { echo 'mktemp failed' exit 1 } - wget -O ISPConfig-3.tar.gz "${URL}" + echo "Downloading ISPConfig update." + wget -q -O ISPConfig-3.tar.gz "${URL}" if [ -f ISPConfig-3.tar.gz ] then - tar xvzf ISPConfig-3.tar.gz --strip-components=1 + echo "Unpacking ISPConfig update." + tar xzf ISPConfig-3.tar.gz --strip-components=1 cd install/ php -q \ -d disable_classes= \