Marius Cramer
2015-01-05 dee987b263b021b990ea4c62cb15be47c6d61fb5
Merge branch 'master' into 'master'

Master

See merge request !140
51 files added
33 files modified
2 files deleted
3427 ■■■■ changed files
interface/web/admin/form/server_config.tform.php 4 ●●●● patch | view | raw | blame | history
interface/web/dns/dns_dkim_edit.php 31 ●●●●● patch | view | raw | blame | history
interface/web/dns/dns_dkim_get.php 86 ●●●●● patch | view | raw | blame | history
interface/web/dns/dns_dmarc_edit.php 377 ●●●●● patch | view | raw | blame | history
interface/web/dns/dns_spf_edit.php 269 ●●●●● patch | view | raw | blame | history
interface/web/dns/form/dns_dmarc.tform.php 164 ●●●●● patch | view | raw | blame | history
interface/web/dns/form/dns_spf.tform.php 164 ●●●●● patch | view | raw | blame | history
interface/web/dns/form/dns_txt.tform.php 31 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ar_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ar_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ar_dns_txt.lng 29 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/bg_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/bg_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/bg_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/br_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/br_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/br_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/cz_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/cz_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/cz_dns_txt.lng 4 ●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/de_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/de_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/de_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/el_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/el_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/el_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/en_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/en_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/en_dns_txt.lng 5 ●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/es_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/es_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/es_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/fi_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/fi_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/fi_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/fr_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/fr_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/fr_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/hr_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/hr_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/hr_dns_txt.lng 5 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/hu_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/hu_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/hu_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/id_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/id_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/id_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/it_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/it_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/it_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ja_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ja_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ja_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/nl_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/nl_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/nl_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/pl_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/pl_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/pl_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/pt_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/pt_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/pt_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ro_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ro_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ro_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ru_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ru_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ru_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/se_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/se_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/se_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/sk_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/sk_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/sk_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/tr_dns_dmarc.lng 50 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/tr_dns_spf.lng 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/tr_dns_txt.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/dns/templates/dns_dkim_edit.htm 5 ●●●●● patch | view | raw | blame | history
interface/web/dns/templates/dns_dmarc_edit.htm 100 ●●●●● patch | view | raw | blame | history
interface/web/js/dns_dkim.js 72 ●●●●● patch | view | raw | blame | history
interface/web/js/mail_domain_dkim.js 25 ●●●●● patch | view | raw | blame | history
interface/web/mail/mail_domain_dkim_create.php 96 ●●●● patch | view | raw | blame | history
interface/web/mail/mail_domain_edit.php 161 ●●●●● patch | view | raw | blame | history
interface/web/mail/templates/mail_domain_edit.htm 2 ●●● patch | view | raw | blame | history
server/lib/classes/cron.d/500-backup_mail.inc.php 8 ●●●● patch | view | raw | blame | history
server/plugins-available/mail_plugin_dkim.inc.php 7 ●●●● patch | view | raw | blame | history
interface/web/admin/form/server_config.tform.php
@@ -320,8 +320,8 @@
        'dkim_strength' => array(
            'datatype' => 'INTEGER',
            'formtype' => 'SELECT',
            'default' => '1024',
            'value' => array('1024' => 'normal (1024)', '2048' => 'strong (2048)', '4096' => 'very strong (4096)')
            'default' => '2048',
            'value' => array('1024' => 'week (1024)', '2048' => 'normal (2048)', '4096' => 'strong (4096)')
        ),
        'relayhost_password' => array(
            'datatype' => 'VARCHAR',
interface/web/dns/dns_dkim_edit.php
@@ -70,12 +70,20 @@
        }
        parent::onShowNew();
        $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND ?'", $_GET['zone'], $app->tform->getAuthSQL('r'));
        $sql=$app->db->queryOneRecord("SELECT dkim_public, dkim_selector FROM mail_domain WHERE domain = ? AND dkim = 'y' AND ?", substr_replace($soa['origin'],'',-1), $app->tform->getAuthSQL('r'));
        $public_key=str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"),'',$sql['dkim_public']);
        $app->tpl->setVar('public_key', $public_key);
        $app->tpl->setVar('selector', $sql['dkim_selector']);
        $app->tpl->setVar('name', $soa['origin']);
    }
    function onSubmit() {
        global $app, $conf;
        // Get the parent soa record of the domain
        $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND ".$app->tform->getAuthSQL('r'), $app->functions->intval($_POST["zone"]));
        $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND ?", $_POST["zone"], $app->tform->getAuthSQL('r'));
        // Check if Domain belongs to user
        if($soa["id"] != $_POST["zone"]) $app->tform->errorMessage .= $app->tform->wordbook["no_zone_perm"];
@@ -101,16 +109,15 @@
            $this->dataRecord['data']='v=DKIM1; t=s; p='.$this->dataRecord['data'];
            $this->dataRecord['name']=$this->dataRecord['selector'].'._domainkey.'.$this->dataRecord['name'];
        }
        // Update the serial number  and timestamp of the RR record
        $soa = $app->db->queryOneRecord("SELECT serial FROM dns_rr WHERE id = ?", $this->id);
        $this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]);
        $this->dataRecord["stamp"] = date('Y-m-d H:i:s');
            // Update the serial number  and timestamp of the RR record
            $soa = $app->db->queryOneRecord("SELECT serial FROM dns_rr WHERE id = ?", $this->id);
            $this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]);
            $this->dataRecord["stamp"] = date('Y-m-d H:i:s');
        // check for duplicate entry
        $check=$app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ? AND type = ? AND data = ? AND name = ?", $this->dataRecord['zone'], $this->dataRecord['type'], $this->dataRecord['data'], $this->dataRecord['name']);
        if ($check!='') $app->tform->errorMessage .= $app->tform->wordbook["record_exists_txt"];
        if (empty($this->dataRecord['data'])) $app->tform->errorMessage .= $app->tform->wordbook["dkim_disabled_txt"];
            // check for duplicate entry
            $check=$app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ? AND type = ? AND data = ? AND name = ?", $this->dataRecord["zone"], $this->dataRecord["type"], $this->dataRecord["data"], $this->dataRecord['name']);
            if ($check!='') $app->tform->errorMessage .= $app->tform->wordbook["record_exists_txt"];
            if (empty($this->dataRecord['data'])) $app->tform->errorMessage .= $app->tform->wordbook["dkim_disabled_txt"];
        parent::onSubmit();
    }
@@ -118,7 +125,7 @@
        global $app, $conf;
        //* Set the sys_groupid of the rr record to be the same then the sys_groupid of the soa record
        $soa = $app->db->queryOneRecord("SELECT sys_groupid,serial FROM dns_soa WHERE id = ? AND ".$app->tform->getAuthSQL('r'), $app->functions->intval($this->dataRecord['zone']));
        $soa = $app->db->queryOneRecord("SELECT sys_groupid,serial FROM dns_soa WHERE id = ? AND ?", $this->dataRecord["zone"], $app->tform->getAuthSQL('r'));
        $app->db->datalogUpdate('dns_rr', "sys_groupid = ".$soa['sys_groupid'], 'id', $this->id);
        //* Update the serial number of the SOA record
@@ -131,7 +138,7 @@
        global $app, $conf;
        //* Update the serial number of the SOA record
        $soa = $app->db->queryOneRecord("SELECT serial FROM dns_soa WHERE id = ? AND ".$app->tform->getAuthSQL('r'), $app->functions->intval($this->dataRecord["zone"]));
        $soa = $app->db->queryOneRecord("SELECT serial FROM dns_soa WHERE id = ? AND ?", $this->dataRecord["zone"], $app->tform->getAuthSQL('r'));
        $soa_id = $app->functions->intval($_POST["zone"]);
        $serial = $app->validate_dns->increase_serial($soa["serial"]);
        $app->db->datalogUpdate('dns_soa', "serial = $serial", 'id', $soa_id);
interface/web/dns/dns_dkim_get.php
File was deleted
interface/web/dns/dns_dmarc_edit.php
New file
@@ -0,0 +1,377 @@
<?php
/*
Copyright (c) 2014, Florian Schaal, info@schaal-24.de
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/dns_dmarc.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('dns');
// Loading classes
$app->uses('tpl,tform,tform_actions,validate_dns');
$app->load('tform_actions');
class page_action extends tform_actions {
    function onShowNew() {
        global $app, $conf;
        // we will check only users, not admins
        if($_SESSION["s"]["user"]["typ"] == 'user') {
            // Get the limits of the client
            $client_group_id = intval($_SESSION["s"]["user"]["default_group"]);
            $client = $app->db->queryOneRecord("SELECT limit_dns_record 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.
            if($client["limit_dns_record"] >= 0) {
                $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE sys_groupid = ?", $client_group_id);
                if($tmp["number"] >= $client["limit_dns_record"]) {
                    $app->error($app->tform->wordbook["limit_dns_record_txt"]);
                }
            }
        }
        parent::onShowNew();
    }
    function onShowEnd() {
        global $app, $conf;
        $zone = $app->functions->intval($_GET['zone']);
        // get domain-name
        $sql = "SELECT * FROM dns_soa WHERE id = ? AND ?";
        $rec = $app->db->queryOneRecord($sql, $zone, $app->tform->getAuthSQL('r'));
        $domain_name = rtrim($rec['origin'], '.');
        // set defaults
        $dmarc_policy = 'none';
        $dmarc_adkim = 'r';
        $dmarc_aspf = 'r';
        $dmarc_rf = 'afrf';
        $dmarc_pct = 100;
        $dmarc_ri = 86400;
        $dmarc_sp = 'same';
        //* check for an existing dmarc-record
        $sql = "SELECT data, active FROM dns_rr WHERE data LIKE 'v=DMARC1%' AND zone = ? AND name = ? AND ?";
        $rec = $app->db->queryOneRecord($sql, $zone, '_dmarc.'.$domain_name.'.', $app->tform->getAuthSQL('r'));
        if ( isset($rec) && !empty($rec) ) {
            $this->id = 1;
            $old_data = strtolower($rec['data']);
            $app->tpl->setVar("data", $old_data);
            if ($rec['active'] == 'Y') $app->tpl->setVar("active", "CHECKED");
            $dmarc_rua = '';
            $dmarc_ruf = '';
            $dmac_rf = '';
            $dmac_rua = '';
            $dmac_ruf = '';
            // browse through data
            $temp = explode('; ', $old_data);
            foreach ($temp as $part) {
                if (preg_match("/^p=/", $part)) $dmarc_policy = str_replace('p=', '', $part);
                if (preg_match("/^rua=/", $part)) {
                    $dmarc_rua = str_replace(array('rua=','mailto:'), '', $part).' ';
                    $dmarc_rua = str_replace(',', ' ', $dmarc_rua);
                }
                if (preg_match("/^ruf=/", $part)) {
                    $dmarc_ruf = str_replace(array('ruf=','mailto:'), '', $part).' ';
                    $dmarc_ruf = str_replace(',', ' ', $dmarc_ruf);
                }
                if (preg_match("/^fo=/", $part)) $dmarc_fo = str_replace('fo=', '', $part);
                if (preg_match("/^adkim=/", $part)) $dmarc_adkim = str_replace('adkim=', '', $part);
                if (preg_match("/^aspf=/", $part)) $dmarc_aspf = str_replace('aspf=', '', $part);
                if (preg_match("/^rf=/", $part)) $dmarc_rf = str_replace('rf=', '', $part);
                if (preg_match("/^(afrf:iodef|iodef:afrf)$/s", $dmarc_rf)) $dmarc_rf = str_replace(':', ' ', $dmarc_rf);
                if (preg_match("/^pct=/", $part)) $dmarc_pct = str_replace('pct=', '', $part);
                if (preg_match("/^ri=/", $part)) $dmarc_ri = str_replace('ri=', '', $part);
            }
        }
        //set html-values
        $app->tpl->setVar('domain', $domain_name);
        //create dmarc-policy-list
        $dmarc_policy_value = array(
            'none' => 'dmarc_policy_none_txt',
            'quarantine' => 'dmarc_policy_quarantine_txt',
            'reject' => 'dmarc_policy_reject_txt',
        );
        $dmarc_policy_list='';
        foreach($dmarc_policy_value as $value => $txt) {
            $selected = @($dmarc_policy == $value)?' selected':'';
            $dmarc_policy_list .= "<option value='$value'$selected>".$app->tform->wordbook[$txt]."</option>\r\n";
        }
        $app->tpl->setVar('dmarc_policy', $dmarc_policy_list);
        if (!empty($dmarc_rua)) $app->tpl->setVar("dmarc_rua", $dmarc_rua);
        if (!empty($dmarc_ruf)) $app->tpl->setVar("dmarc_ruf", $dmarc_ruf);
        //set dmarc-fo-options
        if (isset($dmarc_fo)) {
            $temp = explode(':', $dmarc_fo);
            foreach ($temp as $fo => $value) $app->tpl->setVar("dmarc_fo".$value, 'CHECKED');
        } else
            $app->tpl->setVar("dmarc_fo0", 'CHECKED');
        unset($temp);
        //create dmarc-adkim-list
        $dmarc_adkim_value = array(
            'r' => 'dmarc_adkim_r_txt',
            's' => 'dmarc_adkim_s_txt',
        );
        $dmarc_adkim_list='';
        foreach($dmarc_adkim_value as $value => $txt) {
            $selected = @($dmarc_adkim == $value)?' selected':'';
            $dmarc_adkim_list .= "<option value='$value'$selected>".$app->tform->wordbook[$txt]."</option>\r\n";
        }
        $app->tpl->setVar('dmarc_adkim', $dmarc_adkim_list);
        //create dmarc-aspf-list
        $dmarc_aspf_value = array(
            'r' => 'dmarc_aspf_r_txt',
            's' => 'dmarc_aspf_s_txt',
        );
        $dmarc_aspf_list='';
        foreach($dmarc_aspf_value as $value => $txt) {
            $selected = @($dmarc_aspf == $value)?' selected':'';
            $dmarc_aspf_list .= "<option value='$value'$selected>".$app->tform->wordbook[$txt]."</option>\r\n";
        }
        $app->tpl->setVar('dmarc_aspf', $dmarc_aspf_list);
        if ( strpos($dmarc_rf, 'afrf') !== false ) $app->tpl->setVar("dmarc_rf_afrf", 'CHECKED');
        if ( strpos($dmarc_rf, 'iodef') !== false ) $app->tpl->setVar("dmarc_rf_iodef", 'CHECKED');
        $app->tpl->setVar("dmarc_pct", $dmarc_pct);
        $app->tpl->setVar("dmarc_ri", $dmarc_ri);
        //create dmarc-sp-list
        $dmarc_sp_value = array(
            'same' => 'dmarc_sp_same_txt',
            'none' => 'dmarc_sp_none_txt',
            'quarantine' => 'dmarc_sp_quarantine_txt',
            'reject' => 'dmarc_sp_reject_txt',
        );
        $dmarc_sp_list='';
        foreach($dmarc_sp_value as $value => $txt) {
            $selected = @($dmarc_sp == $value)?' selected':'';
            $dmarc_sp_list .= "<option value='$value'$selected>".$app->tform->wordbook[$txt]."</option>\r\n";
        }
        $app->tpl->setVar('dmarc_sp', $dmarc_sp_list);
        parent::onShowEnd();
    }
    function onSubmit() {
        global $app, $conf;
        // Get the parent soa record of the domain
        $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND ?", $_POST['zone'], $app->tform->getAuthSQL('r'));
        // Check if Domain belongs to user
        if($soa["id"] != $_POST["zone"]) $app->tform->errorMessage .= $app->tform->wordbook["no_zone_perm"];
        // Check the client limits, if user is not the admin
        if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin
            // Get the limits of the client
            $client_group_id = intval($_SESSION["s"]["user"]["default_group"]);
            $client = $app->db->queryOneRecord("SELECT limit_dns_record 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.
            if($this->id == 0 && $client["limit_dns_record"] >= 0) {
                $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE sys_groupid = ?", $client_group_id);
                if($tmp["number"] >= $client["limit_dns_record"]) {
                    $app->error($app->tform->wordbook["limit_dns_record_txt"]);
                }
            }
        } // end if user is not admin
        $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'.'.');
        if (!is_array($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.'.');
        // 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;
            $app->tform->errorMessage .= $app->tform->wordbook['dmarc_more_spf_txt'];
        }
        if (empty($temp)) {
            if (isset($app->tform->errorMessage )) $app->tform->errorMessage = '<br/>' . $app->tform->errorMessage;
            $app->tform->errorMessage .= $app->tform->wordbook['dmarc_no_spf_txt'];
        }
        unset($temp);
        //validate dmarc_pct
        $this->dataRecord['dmarc_pct'] = $app->functions->intval($this->dataRecord['dmarc_pct']);
        if ($this->dataRecord['dmarc_pct'] < 0) $this->dataRecord['dmarc_pct'] = 0;
        if ($this->dataRecord['dmarc_pct'] > 100) $this->dataRecord['dmarc_pct'] = 100;
        //create dmarc-record
        $dmarc_record[] = 'p='.$this->dataRecord['dmarc_policy'];
        if (!empty($this->dataRecord['dmarc_rua'])) {
            $dmarc_rua = explode(' ', $this->dataRecord['dmarc_rua']);
            $dmarc_rua = array_filter($dmarc_rua);
            foreach ($dmarc_rua as $rec) {
                if (!filter_var($rec, FILTER_VALIDATE_EMAIL)) {
                    if (isset($app->tform->errorMessage )) $app->tform->errorMessage = '<br/>' . $app->tform->errorMessage;
                    $app->tform->errorMessage .= $app->tform->wordbook['dmarc_invalid_email_txt'].': '.$dmarc_rua;
                } else {
                    $temp .= 'mailto:'.$rec.',';
                }
            }
            $dmarc_record[] = 'rua='.rtrim($temp, ',');
            unset ($dmarc_rua);
            unset($temp);
        }
        if (!empty($this->dataRecord['dmarc_ruf'])) {
            $dmarc_ruf = explode(' ', $this->dataRecord['dmarc_ruf']);
            $dmarc_ruf = array_filter($dmarc_ruf);
            foreach ($dmarc_ruf as $rec) {
                if (!filter_var($rec, FILTER_VALIDATE_EMAIL)) {
                    if (isset($app->tform->errorMessage )) $app->tform->errorMessage = '<br/>' . $app->tform->errorMessage;
                    $app->tform->errorMessage .= $app->tform->wordbook['dmarc_invalid_email_txt'].': '.$dmarc_rua;
                } else {
                    $temp .= 'mailto:'.$rec.',';
                }
            }
            $dmarc_record[] = 'ruf='.rtrim($temp, ',');
            unset ($dmarc_ruf);
            unset($temp);
        }
        $fo_rec = '';
        if (isset($this->dataRecord['dmarc_fo0'])) $fo_rec[] = '0';
        if (isset($this->dataRecord['dmarc_fo1'])) $fo_rec[] = '1';
        if (isset($this->dataRecord['dmarc_fod'])) $fo_rec[] = 'd';
        if (isset($this->dataRecord['dmarc_fos'])) $fo_rec[] = 's';
        if (is_array($fo_rec) && !empty($fo_rec)) {
            $rec = 'fo='.implode(':', $fo_rec);
            if ($rec != 'fo=0') $dmarc_record[] = 'fo='.implode(':', $fo_rec);
            unset($rec);
        }
        if ($this->dataRecord['dmarc_adkim'] != 'r' )
            $dmarc_record[] = 'adkim='.$this->dataRecord['dmarc_adkim'];
        if ($this->dataRecord['dmarc_aspf'] != 'r' )
            $dmarc_record[] = 'aspf='.$this->dataRecord['dmarc_aspf'];
        if (isset($this->dataRecord['dmarc_rf_afrf']) && isset($this->dataRecord['dmarc_rf_iodef']))
            $dmarc_record[] = 'rf=afrf:iodef';
        else {
             if (isset($this->dataRecord['dmarc_rf_iodef']))
                $dmarc_record[] = 'rf=iodef';
        }
        unset($fo_rec);
        if (!empty($this->dataRecord['dmarc_pct']) && $this->dataRecord['dmarc_pct'] != 100)
            $dmarc_record[] = 'pct='.$this->dataRecord['dmarc_pct'];
        if (!empty($this->dataRecord['dmarc_ri']) && $this->dataRecord['dmarc_ri'] != '86400')
            $dmarc_record[] = 'ri='.$this->dataRecord['dmarc_ri'];
        if (!empty($this->dataRecord['dmarc_sp']) && $this->dataRecord['dmarc_sp'] != 'same')
            $dmarc_record[] = 'sp='.$this->dataRecord['dmarc_sp'];
        $temp = implode('; ', $dmarc_record);
        if (!empty($temp))
            $this->dataRecord['data'] = 'v=DMARC1; ' . $temp;
        else $app->tform->errorMessage .= $app->tform->wordbook["dmarc_empty_txt"];
        $this->dataRecord['name'] = '_dmarc.' . $soa['origin'];
        if (isset($this->dataRecord['active'])) $this->dataRecord['active'] = 'Y';
        // Set the server ID of the rr record to the same server ID as the parent record.
        $this->dataRecord["server_id"] = $soa["server_id"];
        // Update the serial number  and timestamp of the RR record
        $soa = $app->db->queryOneRecord("SELECT serial FROM dns_rr WHERE id = ?", $this->id);
        $this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]);
        $this->dataRecord["stamp"] = date('Y-m-d H:i:s');
        // always update an existing entry
        $check=$app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ? AND type = ? AND data LIKE 'v=DMARC1%' AND name = ?", $this->dataRecord['zone'], $this->dataRecord['type'], $this->dataRecord['name']);
        $this->id = $check['id'];
        if (!isset($this->dataRecord['active'])) $this->dataRecord['active'] = 'N';
        parent::onSubmit();
    }
    function onAfterInsert() {
        global $app, $conf;
        //* Set the sys_groupid of the rr record to be the same then the sys_groupid of the soa record
        $soa = $app->db->queryOneRecord("SELECT sys_groupid,serial FROM dns_soa WHERE id = ? AND ?", $app->functions->intval($this->dataRecord["zone"]), $app->tform->getAuthSQL('r'));
        $app->db->datalogUpdate('dns_rr', "sys_groupid = ".$soa['sys_groupid'], 'id', $this->id);
        //* Update the serial number of the SOA record
        $soa_id = $app->functions->intval($_POST["zone"]);
        $serial = $app->validate_dns->increase_serial($soa["serial"]);
        $app->db->datalogUpdate('dns_soa', "serial = $serial", 'id', $soa_id);
    }
    function onAfterUpdate() {
        global $app, $conf;
        //* Update the serial number of the SOA record
        $soa = $app->db->queryOneRecord("SELECT serial FROM dns_soa WHERE id = ? AND ?", $app->functions->intval($this->dataRecord["zone"]), $app->tform->getAuthSQL('r'));
        $soa_id = $app->functions->intval($_POST["zone"]);
        $serial = $app->validate_dns->increase_serial($soa["serial"]);
        $app->db->datalogUpdate('dns_soa', "serial = $serial", 'id', $soa_id);
    }
}
$page = new page_action;
$page->onLoad();
?>
interface/web/dns/dns_spf_edit.php
New file
@@ -0,0 +1,269 @@
<?php
/*
Copyright (c) 2014, Florian Schaal, info@schaal-24.de
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/dns_spf.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('dns');
// Loading classes
$app->uses('tpl,tform,tform_actions,validate_dns');
$app->load('tform_actions');
class page_action extends tform_actions {
    function onShowNew() {
        global $app, $conf;
        // we will check only users, not admins
        if($_SESSION["s"]["user"]["typ"] == 'user') {
            // Get the limits of the client
            $client_group_id = intval($_SESSION["s"]["user"]["default_group"]);
            $client = $app->db->queryOneRecord("SELECT limit_dns_record 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.
            if($client["limit_dns_record"] >= 0) {
                $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE sys_groupid = ?", $client_group_id);
                if($tmp["number"] >= $client["limit_dns_record"]) {
                    $app->error($app->tform->wordbook["limit_dns_record_txt"]);
                }
            }
        }
        parent::onShowNew();
    }
    function onShowEnd() {
        global $app, $conf;
        $zone = $app->functions->intval($_GET['zone']);
        //* check for an existing spf-record
        $sql = "SELECT data, active FROM dns_rr WHERE data LIKE 'v=spf1%' AND zone = ? AND ?";
        $rec = $app->db->queryOneRecord($sql, $zone, $app->tform->getAuthSQL('r'));
        if ( isset($rec) && !empty($rec) ) {
            $this->id = 1;
            $old_data = strtolower($rec['data']);
            $app->tpl->setVar("data", $old_data);
            if ($rec['active'] == 'Y') $app->tpl->setVar("active", "CHECKED"); else $app->tpl->setVar("active", "UNCHECKED");
            $spf_hostname = '';
            $spf_ip = '';
            $spf_domain = '';
            $spf_mechanism = '';
            // browse through data
            $temp = explode(' ', $old_data);
            foreach ($temp as $part) {
                if ($part == 'a') $app->tpl->setVar("spf_a_active", "CHECKED");
                if ($part == 'mx') $app->tpl->setVar("spf_mx_active", "CHECKED");
                if (preg_match("/^ip(4|6):/", $part)) $spf_ip .= str_replace(array('ip4:','ip6:'), '', $part) . ' ';
                if (preg_match("/^a:/", $part)) $spf_hostname .= str_replace('a:', '', $part) . ' ';
                if (preg_match("/^\\??include/", $part)) $spf_domain .= str_replace(array('include:', '?'), '', $part) . ' ';
            }
            unset($temp);
            $spf_ip = rtrim($spf_ip);
            $spf_hostname = rtrim($spf_hostname);
            $spf_domain = rtrim($spf_domain);
            $spf_mechanism = substr($rec['data'], -4, 1);
        }
        //set html-values
        $app->tpl->setVar("spf_ip", $spf_ip);
        $app->tpl->setVar("spf_hostname", $spf_hostname);
        $app->tpl->setVar("spf_domain", $spf_domain);
        //create spf-mechanism-list
        $spf_mechanism_value = array(
            '+' => 'spf_mechanism_pass_txt',
            '-' => 'spf_mechanism_fail_txt',
            '~' => 'spf_mechanism_softfail_txt',
            '?' => 'spf_mechanism_neutral_txt'
        );
        $spf_mechanism_list='';
        foreach($spf_mechanism_value as $value => $txt) {
            $selected = @($spf_mechanism == $value)?' selected':'';
            $spf_mechanism_list .= "<option value='$value'$selected>".$app->tform->wordbook[$txt]."</option>\r\n";
        }
        $app->tpl->setVar('spf_mechanism', $spf_mechanism_list);
        parent::onShowEnd();
    }
    function onSubmit() {
        global $app, $conf;
        // Get the parent soa record of the domain
        $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND ?", $app->functions->intval($_POST["zone"]), $app->tform->getAuthSQL('r'));
        // Check if Domain belongs to user
        if($soa["id"] != $_POST["zone"]) $app->tform->errorMessage .= $app->tform->wordbook["no_zone_perm"];
        // Check the client limits, if user is not the admin
        if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin
            // Get the limits of the client
            $client_group_id = intval($_SESSION["s"]["user"]["default_group"]);
            $client = $app->db->queryOneRecord("SELECT limit_dns_record 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.
            if($this->id == 0 && $client["limit_dns_record"] >= 0) {
                $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE sys_groupid = ?", $client_group_id);
                if($tmp["number"] >= $client["limit_dns_record"]) {
                    $app->error($app->tform->wordbook["limit_dns_record_txt"]);
                }
            }
        } // end if user is not admin
        //create spf-record
        if (!empty($this->dataRecord['spf_mx'])) {
            $spf_record[] = 'mx';
        }
        if (!empty($this->dataRecord['spf_a'])) {
            $spf_record[] = 'a';
        }
        $spf_ip = trim($this->dataRecord['spf_ip']);
        if (!empty($spf_ip)) {
            $rec = split(' ', $spf_ip);
            foreach ($rec as $ip) {
                $temp_ip = explode('/', $ip);
                if (filter_var($temp_ip[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
                    $temp = 'ip4:' . $temp_ip[0];
                    if (isset($temp_ip[1])) $temp .= '/' . $temp_ip[1];
                    $spf_record[] = $temp;
                    unset($temp);
                }
                elseif (filter_var($temp_ip[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
                    $temp = 'ip6:' . $temp_ip[0];
                    if (isset($temp_ip[1])) $temp .= '/' . $temp_ip[1];
                    $spf_record[] = $temp;
                    unset($temp);
                }
                else {
                    if (isset($app->tform->errorMessage )) $app->tform->errorMessage = '<br/>' . $app->tform->errorMessage;
                    $app->tform->errorMessage .= $app->tform->wordbook["spf_invalid_ip_txt"]. $temp_ip[0];
                    if (isset( $temp_ip[1])) $app->tform->errorMessage .= "/".$temp_ip[1];
                }
            }
        }
        $spf_hostname = trim($this->dataRecord['spf_hostname']);
        if (!empty($spf_hostname)) {
            $rec = split(' ', $spf_hostname);
            foreach ($rec as $hostname) {
                if (preg_match('/^[a-zA-Z0-9\\.\\-\\*]{0,64}$/', $hostname))
                    $spf_record[] = 'a:' . $hostname;
                else {
                    if (isset($app->tform->errorMessage )) $app->tform->errorMessage .= '<br/>' . $app->tform->wordbook["spf_invalid_hostname_txt"]. $hostname;
                    $app->tform->errorMessage .= $app->tform->wordbook["spf_invalid_hostname_txt"]. $hostname;
                }
            }
            unset($rec);
        }
        $spf_domain = trim($this->dataRecord['spf_domain']);
        if (!empty($spf_domain)) {
            $rec = split(' ', $spf_domain);
            foreach ($rec as $domain) {
                if (preg_match('/_^[a-zA-Z0-9\\.\\-\\*]{0,64}$/', $domain))
                    $spf_record[] = 'include:' . $domain;
                else {
                    if (isset($app->tform->errorMessage )) $app->tform->errorMessage .= '<br/>' . $app->tform->wordbook["spf_invalid_domain_txt"]. $domain;
                    $app->tform->errorMessage .= $app->tform->wordbook["spf_invalid_domain_txt"]. $domain;
                }
            }
        }
        $temp = implode(' ', $spf_record);unset($spf_record);
        if (!empty($temp))
            $this->dataRecord['data'] = 'v=spf1 ' . $temp . ' ' . $this->dataRecord['spf_mechanism'] . 'all';
        else $this->dataRecord['data'] = 'v=spf1 ' . $this->dataRecord['spf_mechanism'] . 'all';
        unset($temp);
        $this->dataRecord['name'] = $soa['origin'];
        if (isset($this->dataRecord['active'])) $this->dataRecord['active'] = 'Y';
        // Set the server ID of the rr record to the same server ID as the parent record.
        $this->dataRecord["server_id"] = $soa["server_id"];
        // Update the serial number  and timestamp of the RR record
        $soa = $app->db->queryOneRecord("SELECT serial FROM dns_rr WHERE id = ?", $this->id);
        $this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]);
        $this->dataRecord["stamp"] = date('Y-m-d H:i:s');
        // always update an existing entry
        $check=$app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ? AND type = ? AND data LIKE 'v=spf1%' AND name = ?", $this->dataRecord["zone"], $this->dataRecord["type"], $this->dataRecord['name'].'.');
        $this->id = $check['id'];
        if (!isset($this->dataRecord['active'])) $this->dataRecord['active'] = 'N';
        parent::onSubmit();
    }
    function onAfterInsert() {
        global $app, $conf;
        //* Set the sys_groupid of the rr record to be the same then the sys_groupid of the soa record
        $soa = $app->db->queryOneRecord("SELECT sys_groupid,serial FROM dns_soa WHERE id = ? AND ?", $app->functions->intval($this->dataRecord["zone"]), $app->tform->getAuthSQL('r'));
        $app->db->datalogUpdate('dns_rr', "sys_groupid = ".$soa['sys_groupid'], 'id', $this->id);
        //* Update the serial number of the SOA record
        $soa_id = $app->functions->intval($_POST["zone"]);
        $serial = $app->validate_dns->increase_serial($soa["serial"]);
        $app->db->datalogUpdate('dns_soa', "serial = $serial", 'id', $soa_id);
    }
    function onAfterUpdate() {
        global $app, $conf;
        //* Update the serial number of the SOA record
        $soa = $app->db->queryOneRecord("SELECT serial FROM dns_soa WHERE id = ? AND ?", $app->functions->intval($this->dataRecord["zone"]), $app->tform->getAuthSQL('r'));
        $soa_id = $app->functions->intval($_POST["zone"]);
        $serial = $app->validate_dns->increase_serial($soa["serial"]);
        $app->db->datalogUpdate('dns_soa', "serial = $serial", 'id', $soa_id);
    }
}
$page = new page_action;
$page->onLoad();
?>
interface/web/dns/form/dns_dmarc.tform.php
New file
@@ -0,0 +1,164 @@
<?php
/*
    Form Definition
    Tabledefinition
    Datatypes:
    - INTEGER (Forces the input to Int)
    - DOUBLE
    - CURRENCY (Formats the values to currency notation)
    - VARCHAR (no format check, maxlength: 255)
    - TEXT (no format check)
    - DATE (Dateformat, automatic conversion to timestamps)
    Formtype:
    - TEXT (Textfield)
    - TEXTAREA (Textarea)
    - PASSWORD (Password textfield, input is not shown when edited)
    - SELECT (Select option field)
    - RADIO
    - CHECKBOX
    - CHECKBOXARRAY
    - FILE
    VALUE:
    - Wert oder Array
    Hint:
    The ID field of the database table is not part of the datafield definition.
    The ID field must be always auto incement (int or bigint).
*/
global $app;
$form["title"]    = "DNS DMARC Record";
$form["description"]  = "";
$form["name"]    = "dns_dmarc";
$form["action"]   = "dns_dmarc_edit.php";
$form["db_table"]  = "dns_rr";
$form["db_table_idx"] = "id";
$form["db_history"]  = "yes";
$form["tab_default"] = "dns";
$form["list_default"] = "dns_a_list.php";
$form["auth"]   = 'yes'; // yes / no
$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"]['dns'] = array (
    'title'  => "DNS DMARC",
    'width'  => 100,
    'template'  => "templates/dns_dmarc_edit.htm",
    'fields'  => array (
        //#################################
        // Begin Datatable fields
        //#################################
        'server_id' => array (
            'datatype' => 'INTEGER',
            'formtype' => 'SELECT',
            'default' => '',
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        'zone' => array (
            'datatype' => 'INTEGER',
            'formtype' => 'TEXT',
            'default' => @$app->functions->intval($_REQUEST["zone"]),
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        'name' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'TEXT',
            'filters'   => array( 0 => array( 'event' => 'SAVE',
                    'type' => 'IDNTOASCII'),
                1 => array( 'event' => 'SHOW',
                    'type' => 'IDNTOUTF8'),
                2 => array( 'event' => 'SAVE',
                    'type' => 'TOLOWER')
            ),
            'validators' => array (  0 => array ( 'type' => 'REGEX',
                    'regex' => '/^[a-zA-Z0-9\.\-\_]{0,255}$/',
                    'errmsg'=> 'name_error_regex'),
            ),
            'default' => '',
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        'type' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'TEXT',
            'default' => 'TXT',
            'value'  => '',
            'width'  => '5',
            'maxlength' => '5'
        ),
        'data' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'TEXT',
            'default' => '',
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        /*
        'aux' => array (
            'datatype'    => 'INTEGER',
            'formtype'    => 'TEXT',
            'default'    => '0',
            'value'        => '',
            'width'        => '10',
            'maxlength'    => '10'
        ),
        */
        'ttl' => array (
            'datatype' => 'INTEGER',
            'formtype' => 'TEXT',
            'validators' => array (  0 => array ( 'type' => 'RANGE',
                    'range' => '60:',
                    'errmsg'=> 'ttl_range_error'),
            ),
            'default' => '3600',
            'value'  => '',
            'width'  => '10',
            'maxlength' => '10'
        ),
        'active' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'CHECKBOX',
            'default' => 'Y',
        ),
        'stamp' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'TEXT',
            'default' => '',
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        'serial' => array (
            'datatype' => 'INTEGER',
            'formtype' => 'TEXT',
            'default' => '',
            'value'  => '',
            'width'  => '10',
            'maxlength' => '10'
        ),
        //#################################
        // End Datatable fields
        //#################################
    )
);
?>
interface/web/dns/form/dns_spf.tform.php
New file
@@ -0,0 +1,164 @@
<?php
/*
    Form Definition
    Tabledefinition
    Datatypes:
    - INTEGER (Forces the input to Int)
    - DOUBLE
    - CURRENCY (Formats the values to currency notation)
    - VARCHAR (no format check, maxlength: 255)
    - TEXT (no format check)
    - DATE (Dateformat, automatic conversion to timestamps)
    Formtype:
    - TEXT (Textfield)
    - TEXTAREA (Textarea)
    - PASSWORD (Password textfield, input is not shown when edited)
    - SELECT (Select option field)
    - RADIO
    - CHECKBOX
    - CHECKBOXARRAY
    - FILE
    VALUE:
    - Wert oder Array
    Hint:
    The ID field of the database table is not part of the datafield definition.
    The ID field must be always auto incement (int or bigint).
*/
global $app;
$form["title"]    = "DNS SPF Record";
$form["description"]  = "";
$form["name"]    = "dns_spf";
$form["action"]   = "dns_spf_edit.php";
$form["db_table"]  = "dns_rr";
$form["db_table_idx"] = "id";
$form["db_history"]  = "yes";
$form["tab_default"] = "dns";
$form["list_default"] = "dns_a_list.php";
$form["auth"]   = 'yes'; // yes / no
$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"]['dns'] = array (
    'title'  => "DNS SPF",
    'width'  => 100,
    'template'  => "templates/dns_spf_edit.htm",
    'fields'  => array (
        //#################################
        // Begin Datatable fields
        //#################################
        'server_id' => array (
            'datatype' => 'INTEGER',
            'formtype' => 'SELECT',
            'default' => '',
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        'zone' => array (
            'datatype' => 'INTEGER',
            'formtype' => 'TEXT',
            'default' => @$app->functions->intval($_REQUEST["zone"]),
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        'name' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'TEXT',
            'filters'   => array( 0 => array( 'event' => 'SAVE',
                    'type' => 'IDNTOASCII'),
                1 => array( 'event' => 'SHOW',
                    'type' => 'IDNTOUTF8'),
                2 => array( 'event' => 'SAVE',
                    'type' => 'TOLOWER')
            ),
            'validators' => array (  0 => array ( 'type' => 'REGEX',
                    'regex' => '/^[a-zA-Z0-9\.\-\_]{0,255}$/',
                    'errmsg'=> 'name_error_regex'),
            ),
            'default' => '',
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        'type' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'TEXT',
            'default' => 'TXT',
            'value'  => '',
            'width'  => '5',
            'maxlength' => '5'
        ),
        'data' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'TEXT',
            'default' => '',
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        /*
        'aux' => array (
            'datatype'    => 'INTEGER',
            'formtype'    => 'TEXT',
            'default'    => '0',
            'value'        => '',
            'width'        => '10',
            'maxlength'    => '10'
        ),
        */
        'ttl' => array (
            'datatype' => 'INTEGER',
            'formtype' => 'TEXT',
            'validators' => array (  0 => array ( 'type' => 'RANGE',
                    'range' => '60:',
                    'errmsg'=> 'ttl_range_error'),
            ),
            'default' => '86400',
            'value'  => '',
            'width'  => '10',
            'maxlength' => '10'
        ),
        'active' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'CHECKBOX',
            'default' => 'Y',
        ),
        'stamp' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'TEXT',
            'default' => '',
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        'serial' => array (
            'datatype' => 'INTEGER',
            'formtype' => 'TEXT',
            'default' => '',
            'value'  => '',
            'width'  => '10',
            'maxlength' => '10'
        ),
        //#################################
        // End Datatable fields
        //#################################
    )
);
?>
interface/web/dns/form/dns_txt.tform.php
@@ -105,24 +105,31 @@
        'data' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'TEXT',
            'validators' => array (  0 => array ( 'type' => 'NOTEMPTY',
                    'errmsg'=> 'data_error_empty'),
            'validators' => array (
                0 => array (
                    'type' => 'NOTEMPTY',
                    'errmsg'=> 'data_error_empty'
                ),
                1 => array (
                    'type' => 'REGEX',
                    'regex' => "/^((?!v=DKIM).)*$/s",
                    'errmsg'=> 'invalid_type_dkim'
                ),
                2 => array (
                    'type' => 'REGEX',
                    'regex' => "/^((?!v=DMARC1; ).)*$/s",
                    'errmsg'=> 'invalid_type_dmarc'),
                3 => array (
                    'type' => 'REGEX',
                    'regex' => "/^((?!v=spf).)*$/s",
                    'errmsg'=> 'invalid_type_spf'
                ),
            ),
            'default' => '',
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        /*
        'aux' => array (
            'datatype'    => 'INTEGER',
            'formtype'    => 'TEXT',
            'default'    => '0',
            'value'        => '',
            'width'        => '10',
            'maxlength'    => '10'
        ),
        */
        'ttl' => array (
            'datatype' => 'INTEGER',
            'formtype' => 'TEXT',
interface/web/dns/lib/lang/ar_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/ar_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/ar_dns_txt.lng
@@ -1,16 +1,19 @@
<?php
$wb['server_id_txt'] = 'Server';
$wb['zone_txt'] = 'Zone';
$wb['name_txt'] = 'Hostname';
$wb['type_txt'] = 'type';
$wb['data_txt'] = 'Text';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['name_error_empty'] = 'The hostname is empty.';
$wb['name_error_regex'] = 'The hostname has the wrong format.';
$wb['data_error_empty'] = 'Text empty';
$wb['data_error_regex'] = 'Text format invalid';
$wb["server_id_txt"] = 'Server';
$wb["zone_txt"] = 'Zone';
$wb["name_txt"] = 'Hostname';
$wb["type_txt"] = 'type';
$wb["data_txt"] = 'Text';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb["name_error_empty"] = 'The hostname is empty.';
$wb["name_error_regex"] = 'The hostname has the wrong format.';
$wb["data_error_empty"] = 'Text empty';
$wb["data_error_regex"] = 'Text format invalid';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/bg_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/bg_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/bg_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Text empty';
$wb['data_error_regex'] = 'Text format invalid';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/br_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/br_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/br_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Endereço IP em branco';
$wb['data_error_regex'] = 'Endereço IP formato inválido';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/cz_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/cz_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/cz_dns_txt.lng
@@ -13,5 +13,7 @@
$wb['data_error_empty'] = 'Text je prázdný';
$wb['data_error_regex'] = 'Text má chybný formát';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/de_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/de_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanismus';
$wb['spf_mechanism_pass_txt'] = 'Pass - Mails von anderen Sendern zulassen';
$wb['spf_mechanism_fail_txt'] = 'Fail - Mails von anderen Sendern abweisen';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - Mails von anderen Sendern zulassen aber markieren';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - nichts unternehmen';
$wb['spf_mx_txt'] = 'Von allen MX-Servern dürfen Mails für diese Domain verschicken';
$wb['spf_a_txt'] = 'Von allen eingetragenen IP-Adressen dürfen Mails für diese Domain verschickt werden';
$wb['spf_ip_txt'] = 'Zusätzliche IP-Adressen im CIDR Format, die Mails für diese Domain verschicken dürfen';
$wb['spf_ip_note_txt'] = '(mehrere IPs mit Leerzeichen trennen)';
$wb['spf_invalid_ip_txt'] = 'Ungültige IP-Adresse';
$wb['spf_hostname_txt'] = 'Zusätzliche Hostnamen, die für diese Domain Mails verschicken dürfen oder als Relay arbeiten.';
$wb['spf_hostname_note_txt'] = '(mehrere Hostnamen mit Leerzeichen trennen)';
$wb['spf_invalid_hostname_txt'] = 'Ungültiger Hostname';
$wb['spf_domain_txt'] = 'Zusätzliche Domains, die Mails verschicken dürfen oder als Relay arbeiten';
$wb['spf_domain_note_txt'] = '(mehrerer Domains mit Leerzeichen trennen)';
$wb['spf_invalid_domain_txt'] = 'Ungültiger Domainname';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Aktiv';
$wb["record_exists_txt"] = 'DNS-Eintrag existiert bereits';
$wb['ttl_range_error'] = 'Min. TTL time ist 60 Sekunden.';
$wb['limit_dns_record_txt'] = 'Die maximale Anzahl an DNS Einträgen für Ihr Konto wurde erreicht.';
$wb['no_zone_perm'] = 'Sie haben nicht die Berechtigung, einen Eintrag zu dieser DNS Zone hinzuzufügen.';
?>
interface/web/dns/lib/lang/de_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Text ist leer';
$wb['data_error_regex'] = 'Textformat ungültig';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM ist nicht zulässig. Bitte den DKIM-Button nutzen';
$wb['invalid_type_dmarc'] = 'DMARC ist nicht zulässig. Bitte den DMARC-Button nutzen';
$wb['invalid_type_spf'] = 'SPF ist nicht zulässig. Bitte den SPF-Button nutzen';
?>
interface/web/dns/lib/lang/el_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/el_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/el_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Το κείμενο δεν έχει οριστεί';
$wb['data_error_regex'] = 'Κείμενο με μη έγκυρη μορφοποίηση';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/en_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/en_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/en_dns_txt.lng
@@ -13,4 +13,7 @@
$wb["data_error_empty"] = 'Text empty';
$wb["data_error_regex"] = 'Text format invalid';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/es_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/es_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/es_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Texto vacío.';
$wb['data_error_regex'] = 'Formato de texto no válido';
$wb['ttl_range_error'] = 'TTL mínimo es 60 segundos';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/fi_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/fi_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/fi_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Tekstikenttä on tyhjä';
$wb['data_error_regex'] = 'Tekstikenttä on vääränlainen';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/fr_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/fr_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/fr_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Le texte est vide';
$wb['data_error_regex'] = 'Le format du texte est invalide';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/hr_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/hr_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/hr_dns_txt.lng
@@ -13,6 +13,7 @@
$wb['data_error_empty'] = 'TXT polje je prazno';
$wb['data_error_regex'] = 'Neispravan format TXT zapisa';
$wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/hu_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/hu_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/hu_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Text empty';
$wb['data_error_regex'] = 'Text format invalid';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/id_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/id_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/id_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Teks kosong';
$wb['data_error_regex'] = 'Format teks tidak valid';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/it_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/it_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/it_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Text empty';
$wb['data_error_regex'] = 'Text format invalid';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/ja_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/ja_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/ja_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'TXT を入力してください。';
$wb['data_error_regex'] = 'TXT の形式が不正です。';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/nl_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/nl_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/nl_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Tekst is niet ingvuld';
$wb['data_error_regex'] = 'Tekst formaat ongeldig';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/pl_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/pl_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/pl_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Tekst jest pusty.';
$wb['data_error_regex'] = 'Tekst ma zły format.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/pt_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/pt_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/pt_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Endereço-IP em branco';
$wb['data_error_regex'] = 'Endereço-IP formato inválido';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/ro_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/ro_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/ro_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Text necompletat';
$wb['data_error_regex'] = 'Format text invalid';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/ru_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/ru_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/ru_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Текст пустой';
$wb['data_error_regex'] = 'Формат неправилен';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/se_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/se_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/se_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Text empty';
$wb['data_error_regex'] = 'Text format invalid';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/sk_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/sk_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/sk_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Text je prázdny';
$wb['data_error_regex'] = 'Text má zlý formát';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/lib/lang/tr_dns_dmarc.lng
New file
@@ -0,0 +1,50 @@
<?php
$wb['data_txt'] = 'DMARC Record';
$wb['domain_txt'] = 'Domain';
$wb['dmarc_policy_txt'] = 'Mail Receiver Policy';
$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).';
$wb['dmarc_policy_none_txt'] = 'none';
$wb['dmarc_policy_quarantine_txt'] = 'quarantine';
$wb['dmarc_policy_reject_txt'] = 'reject';
$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address';
$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address';
$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).';
$wb['dmarc_fo_txt'] = 'Forensic reporting options';
$wb['dmarc_fo0_txt'] = "Generate reports if all underlying authentication mechanisms fail to produce a DMARC 'pass' result.";
$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.';
$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.';
$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.';
$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment';
$wb['dmarc_adkim_note_txt'] = "'strict' requires exact matching between DKIM domain and email's from";
$wb['dmarc_adkim_r_txt'] = 'relaxed';
$wb['dmarc_adkim_s_txt'] = 'strict';
$wb['dmarc_aspf_txt'] = 'SPF identifier alignment';
$wb['dmarc_aspf_note_txt'] = "'strict' requires exact matching between SPF domain and email's from";
$wb['dmarc_aspf_r_txt'] = 'relaxed';
$wb['dmarc_aspf_s_txt'] = 'strict';
$wb['dmarc_rf_txt'] = 'Report Format';
$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format';
$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format';
$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage';
$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.';
$wb['dmarc_ri_txt'] = 'Reporting Interval';
$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 repersents 1 day).';
$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).';
$wb['dmarc_sp_same_txt'] = 'same as domain';
$wb['dmarc_sp_none_txt'] = 'none';
$wb['dmarc_sp_quarantine_txt'] = 'quarantine';
$wb['dmarc_sp_reject_txt'] = 'reject';
$wb['ttl_txt'] = 'TTL';
$wb['active_txt'] = 'Active';
$wb['dmarc_policy_error_txt'] = "Only policy 'none' is allowed without DKIM-signed emails.";
$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.';
$wb['dmarc_no_spf_txt'] = 'No active SPF Record.';
$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record';
$wb['dmarc_invalid_email_txt'] = 'Invalid Email';
$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option';
$wb['record_exists_txt'] = 'DNS-Record already exists';
$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/tr_dns_spf.lng
New file
@@ -0,0 +1,25 @@
<?php
$wb['data_txt'] = 'SPF-Record';
$wb['spf_mechanism_txt'] = 'SPF Mechanism';
$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders';
$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders';
$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email';
$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing';
$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain';
$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain';
$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain';
$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)';
$wb['spf_invalid_ip_txt'] = 'Invalid IP-address';
$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain';
$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)';
$wb['spf_invalid_hostname_txt'] = 'Invalid hostname';
$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain';
$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)';
$wb['spf_invalid_domain_txt'] = 'Invalid domainname';
$wb["ttl_txt"] = 'TTL';
$wb["active_txt"] = 'Active';
$wb["record_exists_txt"] = 'DNS-Record already exists';
$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
?>
interface/web/dns/lib/lang/tr_dns_txt.lng
@@ -13,4 +13,7 @@
$wb['data_error_empty'] = 'Metin boş';
$wb['data_error_regex'] = 'Metin geçersiz formatta';
$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button';
$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button';
$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.';
?>
interface/web/dns/templates/dns_dkim_edit.htm
@@ -6,11 +6,11 @@
        <fieldset class="inlineLabels">
              <div class="ctrlHolder">
                <label for="data">{tmpl_var name='public_key_txt'}</label>
                <textarea name="data" id="data" >{tmpl_var name='public_key'}</textarea>
                <textarea readonly name="data" id="data" >{tmpl_var name='public_key'}</textarea>
              </div>
              <div class="ctrlHolder">
                <label for="selector">{tmpl_var name='selector_txt'}</label>
                <input name="selector" id="selector" value="{tmpl_var name='selector'}" size="20" maxlength="63" type="text" class="textInput" />
                <input name="selector" id="selector" value="{tmpl_var name='selector'}" size="20" maxlength="63" type="text" readonly class="textInput" />
              </div>
            <div class="ctrlHolder">
                <label for="ttl">{tmpl_var name='ttl_txt'}</label>
@@ -38,5 +38,4 @@
    </div>
  
</div>
<script language="JavaScript" type="text/javascript" src="js/dns_dkim.js"></script>
interface/web/dns/templates/dns_dmarc_edit.htm
New file
@@ -0,0 +1,100 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_dns_txt">
    <div class="pnl_formsarea">
        <fieldset class="inlineLabels">
            <div class="ctrlHolder">
                <label for="domain">{tmpl_var name='domain_txt'}</label>
                <input name="domain" id="domain" value="{tmpl_var name='domain'}" readonly size="30" maxlength="255" type="text" class="textInput" />
            </div>
            <div class="ctrlHolder">
                <label for="dmarc_policy">{tmpl_var name='dmarc_policy_txt'}</label>
                <select name="dmarc_policy" id="dmarc_policy" class="selectInput">
                    {tmpl_var name='dmarc_policy'}
                </select>
                {tmpl_var name='dmarc_policy_note_txt'}
            </div>
            <div class="ctrlHolder">
                <label for="dmarc_rua">{tmpl_var name='dmarc_rua_txt'}</label>
                <input name="dmarc_rua" id="dmarc_rua" value="{tmpl_var name='dmarc_rua'}" size="20" maxlength="63" type="text" class="textInput" />
                {tmpl_var name='dmarc_rua_note_txt'}
            </div>
            <div class="ctrlHolder">
                <label for="dmarc_ruf">{tmpl_var name='dmarc_ruf_txt'}</label>
                <input name="dmarc_ruf" id="dmarc_ruf" value="{tmpl_var name='dmarc_ruf'}" size="20" maxlength="63" type="text" class="textInput" />
                {tmpl_var name='dmarc_ruf_note_txt'}
            </div>
            <div class="ctrlHolder">
                <p class="label">{tmpl_var name='dmarc_fo_txt'}</p>
                <div class="multiField">
                    <input type="checkbox" value="1" id="dmarc_fo0" name="dmarc_fo0" {tmpl_var name='dmarc_fo0'}/>{tmpl_var name='dmarc_fo0_txt'}<br>
                    <input type="checkbox" value="1" id="dmarc_fo1" name="dmarc_fo1" {tmpl_var name='dmarc_fo1'}/>{tmpl_var name='dmarc_fo1_txt'}<br>
                    <input type="checkbox" value="1" id="dmarc_fod" name="dmarc_fod" {tmpl_var name='dmarc_fod'}/>{tmpl_var name='dmarc_fod_txt'}<br>
                    <input type="checkbox" value="1" id="dmarc_fos" name="dmarc_fos" {tmpl_var name='dmarc_fos'}/>{tmpl_var name='dmarc_fos_txt'}
                </div>
            </div>
            <div class="ctrlHolder">
                <label for="dmarc_adkim">{tmpl_var name='dmarc_adkim_txt'}</label>
                <select name="dmarc_adkim" id="dmarc_adkim" class="selectInput">
                    {tmpl_var name='dmarc_adkim'}
                </select>
                {tmpl_var name='dmarc_adkim_note_txt'}
            </div>
            <div class="ctrlHolder">
                <label for="dmarc_aspf">{tmpl_var name='dmarc_aspf_txt'}</label>
                <select name="dmarc_aspf" id="dmarc_aspf" class="selectInput">
                    {tmpl_var name='dmarc_aspf'}
                </select>
                {tmpl_var name='dmarc_aspf_note_txt'}
            </div>
            <div class="ctrlHolder">
                <p class="label">{tmpl_var name='dmarc_rf_txt'}</p>
                <div class="multiField">
                     <input type="checkbox" value="1" id=dmarc_rf_afrf" name="dmarc_rf_afrf" {tmpl_var name='dmarc_rf_afrf'}/>{tmpl_var name='dmarc_rf_afrf_txt'}<br>
                    <input type="checkbox" value="1" id="dmarc_rf_iodef" name="dmarc_rf_iodef" {tmpl_var name='dmarc_rf_iodef'}/>{tmpl_var name='dmarc_rf_iodef_txt'}
                </div>
            </div>
            <div class="ctrlHolder">
                <label for="dmarc_pct">{tmpl_var name='dmarc_pct_txt'}</label>
                <input name="dmarc_pct" id="dmarc_pct" value="{tmpl_var name='dmarc_pct'}" size="20" maxlength="63" type="text" class="textInput" />
                {tmpl_var name='dmarc_pct_note_txt'}
            </div>
            <div class="ctrlHolder">
                <label for="dmarc_ri">{tmpl_var name='dmarc_ri_txt'}</label>
                <input name="dmarc_ri" id="dmarc_ri" value="{tmpl_var name='dmarc_ri'}" size="20" maxlength="63" type="text" class="textInput" />
                {tmpl_var name='dmarc_ri_note_txt'}
            </div>
            <div class="ctrlHolder">
                <label for="dmarc_sp">{tmpl_var name='dmarc_sp_txt'}</label>
                <select name="dmarc_sp" id="dmarc_sp" class="selectInput">
                    {tmpl_var name='dmarc_sp'}
                </select>
            </div>
            <div class="ctrlHolder">
                <label for="ttl">{tmpl_var name='ttl_txt'}</label>
                <input name="ttl" id="ttl" value="{tmpl_var name='ttl'}" size="10" maxlength="10" type="text" class="textInput" />
            </div>
            <div class="ctrlHolder">
                <p class="label">{tmpl_var name='active_txt'}</p>
                <div class="multiField">
                    <input type="checkbox" value="1" id="active" name="active" {tmpl_var name='active'} / >
                </div>
            </div>
        </fieldset>
        <input type="hidden" name="id" value="{tmpl_var name='id'}">
        <input type="hidden" name="zone" value="{tmpl_var name='zone'}" id="zone">
        <input type="hidden" name="type" value="{tmpl_var name='type'}">
        <input type="hidden" name="name" value="{tmpl_var name='name'}">
            </div>
        <div class="buttonHolder buttons">
            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','dns/dns_dmarc_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('dns/dns_soa_edit.php?id={tmpl_var name='zone'}');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
        </div>
    </div>
</div>
interface/web/js/dns_dkim.js
File was deleted
interface/web/js/mail_domain_dkim.js
@@ -31,15 +31,16 @@
This Javascript is invoked by
    * mail/templates/mail_domain_edit.htm to show and/or create the key-pair
*/
var request = false;
$('.subsectiontoggle').on('click', function(){
    $(this).children().toggleClass('showing').end().next().slideToggle();
});
function setRequest(action) {
var request = false;
//function setRequest(action) {
function setRequest() {
    if (window.XMLHttpRequest) {
        request = new XMLHttpRequest();
            request = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        try {
            request = new ActiveXObject('Msxml2.XMLHTTP');
@@ -51,7 +52,6 @@
            catch (e) {}
        }
    }
    if (!request) {
        alert("Error creating XMLHTTP-instance");
        return false;
@@ -64,12 +64,20 @@
        } else { 
            var domain = jQuery('#domain').val();
        }
        // we nedd the client-id to get the dkim-strength of the right mail-server
        try {
            var clientid = document.getElementById("client_group_id").selectedIndex; // admin and reseller
        }
        catch (e) {
            var clientid = jQuery('#client_id').val();; // user
        }
        var selector=jQuery('#dkim_selector').val();
        var publickey=jQuery('#dkim_public').val();
        var privatekey=encodeURIComponent(document.getElementById("dkim_private").value)
        request.open('POST', 'mail/mail_domain_dkim_create.php', true);
        request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        request.send('domain='+domain+'&action='+action+'&dkim_selector='+selector+'&dkim_public='+publickey+'&dkim_private='+privatekey);
        request.send('domain='+domain+'&dkim_selector='+selector+'&dkim_public='+publickey+'&client_id='+clientid);
        request.onreadystatechange = interpretRequest;
    }
}
@@ -86,10 +94,9 @@
                document.getElementsByName('dns_record')[0].value = request.responseXML.getElementsByTagName('dns_record')[0].firstChild.nodeValue;
            }
        break;
        default:
        break;
    }
}
setRequest('show');
//setRequest('show');
interface/web/mail/mail_domain_dkim_create.php
@@ -57,23 +57,6 @@
}
/**
 * This function fix PHP's messing up POST input containing characters space, dot,
 * open square bracket and others to be compatible with with the deprecated register_globals
 * @return array POST
 */
function getRealPOST() {
    $pairs = explode("&", file_get_contents("php://input"));
    $vars = array();
    foreach ($pairs as $pair) {
        $nv = explode("=", $pair, 2);
        $name = urldecode($nv[0]);
        $value = $nv[1];
        $vars[$name] = $value;
    }
    return $vars;
}
/**
 * This function formats the public-key
 * @param array $pubkey
 * @return string public-key
@@ -101,21 +84,32 @@
 * @param string $old_selector
 * @return string selector
 */
function new_selector ($old_selector, $domain) {
function new_selector ($old_selector, $domain, $client_id = -1) {
    global $app;
    //* validate post-values
    if ( validate_domain($domain) && validate_selector($old_selector) ) {
        //* get active selectors from dns
        $soa_rec = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE active = 'Y' AND origin = ?", $domain.'.');
        $soa_rec = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE active = 'Y' AND origin = ?");
        if ( isset($soa_rec) && !empty($soa_rec) ) {
            //* check for a dkim-record in the dns?
            $dns_data = $app->db->queryOneRecord("SELECT name FROM dns_rr WHERE name = ? AND active = 'Y'", $old_selector.'._domainkey.'.$domain.'.');
            $selector = str_replace( '._domainkey.'.$domain.'.', '', $dns_data['name']);
                if ( $old_selector == $selector) {
                    $selector = substr($old_selector, 0, 53) . time(); //* add unix-timestamp to delimiter to allow old and new key in the dns
                } else {
                    $selector = $old_selector;
            $dns_data = $app->db->queryOneRecord("SELECT name FROM dns_rr WHERE name = ? AND active = 'Y''", $old_selector.'._domainkey.'.$domain.'.');
            if ( !empty($dns_data) ){
                $selector = str_replace( '._domainkey.'.$domain.'.', '', $dns_data['name']);
            } else {
            }
        } else { //* no dns-zone found - check for existing mail-domain to create a new selector (we need this if a external dns is used)
            if ( $client_id >= 0 ) {
                $sql = "SELECT * from mail_domain WHERE dkim = 'y' AND domain = ? AND dkim_selector = ?";
                $maildomain =  $app->db->queryOneRecord($sql, $domain, $old_selector);
                if ( !empty($maildomain) ) {
                    $selector = $maildomain['selector'];
                }
            }
        }
        if ( $old_selector == $selector) {
            $selector = substr($old_selector, 0, 53) . time(); //* add unix-timestamp to delimiter to allow old and new key in the dns
        } else {
            $selector = $old_selector;
        }
    } else {
        $selector = 'invalid domain or selector';
@@ -123,35 +117,35 @@
    return $selector;
}
$client_id = $app->functions->intval($_POST['client_id']);
//* get dkim-strength for server_id
//$mail_server_id = $app->functions->intval( $app->db->queryOneRecord("SELECT server_id from mail_domain WHERE domain = ?", $_POST['domain']) );
//$dkim_strength = $app->functions->intval( $app->getconf->get_server_config($mail_server_id, 'mail')['dkim_strength'] );
$rec = $app->db->queryOneRecord("SELECT server_id from mail_domain WHERE domain = ?", $_POST['domain']);
$mail_server_id = $app->functions->intval($rec['server_id']);
unset ($rec);
$rec = $app->getconf->get_server_config($mail_server_id, 'mail');
$dkim_strength = $app->functions->intval($rec['dkim_strength']);
unset ($rec);
if ( empty($dkim_strength) ) $dkim_strength = 1024;
switch ($_POST['action']) {
    case 'create': /* create DKIM Private-key */
        $_POST=getRealPOST();
        $rnd_val = $dkim_strength * 10;
        exec('openssl rand -out ../../temp/random-data.bin '.$rnd_val.' 2> /dev/null', $output, $result);
        exec('openssl genrsa -rand ../../temp/random-data.bin '.$dkim_strength.' 2> /dev/null', $privkey, $result);
        unlink('../../temp/random-data.bin');
        foreach($privkey as $values) $private_key=$private_key.$values."\n";
        //* check the selector for updated dkim-settings only
        if ( isset($_POST['dkim_public']) && !empty($_POST['dkim_public']) ) $selector = new_selector($_POST['dkim_selector'], $_POST['domain']);
    break;
    case 'show': /* show the DNS-Record onLoad */
        $private_key=$_POST['dkim_private'];
    break;
$sql = "SELECT server_id from mail_domain WHERE domain = ?";
$mail_server = $app->db->queryOneRecord($sql, $_POST['domain']);
if ( is_array($mail_server) ) { //* we are adding an existing mail-domain
    $mail_server_id = $app->functions->intval( $mail_server['server_id'] );
} else {
    $sql = "SELECT default_mailserver FROM client WHERE client_id = ?";
    $mail_server = $app->db->queryOneRecord($sql, $client_id);
    $mail_server_id = $app->functions->intval( $mail_server['default_mailserver'] );
}
unset($mail_server);
$mail_config = $app->getconf->get_server_config($mail_server_id, 'mail');
$dkim_strength = $app->functions->intval($mail_config['dkim_strength']);
unset($mail_config);
$public_key=get_public_key($private_key, $dkim_strength);
if ( empty($dkim_strength) ) $dkim_strength = 2048;
$rnd_val = $dkim_strength * 10;
exec('openssl rand -out ../../temp/random-data.bin '.$rnd_val.' 2> /dev/null', $output, $result);
exec('openssl genrsa -rand ../../temp/random-data.bin '.$dkim_strength.' 2> /dev/null', $privkey, $result);
unlink("../../temp/random-data.bin");
foreach($privkey as $values) $private_key=$private_key.$values."\n";
//* check the selector for updated dkim-settings only
if ( isset($_POST['dkim_public']) && !empty($_POST['dkim_public']) ) $selector = new_selector($_POST['dkim_selector'], $_POST['domain'], $client_id);
if ( !isset($public_key) ) $public_key=get_public_key($private_key, $dkim_strength);
$dns_record=str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"),'',$public_key);
if ( !isset($selector) ) {
interface/web/mail/mail_domain_edit.php
old mode 100644 new mode 100755
@@ -206,6 +206,16 @@
            $app->tpl->setVar("edit_disabled", 0);
        }
        // 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']);
        $dns_record = '.' . $rec['dkim_selector'] . '_domainkey._' . $rec['domain'] . '. 3600   TXT   v=DKIM1; t=s; p=' . $dns_key;
        $app->tpl->setVar('dkim_selector', $rec['dkim_selector']);
        $app->tpl->setVar('dkim_private', $rec['dkim_private']);
        $app->tpl->setVar('dkim_public', $rec['dkim_public']);
        if (!empty($rec['dkim_public'])) $app->tpl->setVar('dns_record', $dns_record);
        parent::onShowEnd();
    }
@@ -286,36 +296,6 @@
            }
        } // endif spamfilter policy
        //* create dns-record with dkim-values if the zone exists
        if ( (isset($this->dataRecord['dkim']) && $this->dataRecord['dkim'] == 'y') && (isset($this->dataRecord['active']) && $this->dataRecord['active'] == 'y') ) {
            $soa_rec = $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 = ?", $this->dataRecord['domain'].'.');
            if ( isset($soa_rec) && !empty($soa_rec) ) {
                //* check for a dkim-record in the dns
                $dns_data = $app->db->queryOneRecord("SELECT * FROM dns_rr WHERE name = ? AND sys_groupid = ?", $this->dataRecord['dkim_selector'].'._domainkey.'.$this->dataRecord['domain'].'.', $_SESSION["s"]["user"]['sys_groupid']);
                if ( isset($dns_data) && !empty($dns_data) ) {
                    $dns_data['data'] = 'v=DKIM1; t=s; p='.str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"), '', $this->dataRecord['dkim_public']);
                    $dns_data['active'] = 'Y';
                    $dns_data['stamp'] = date('Y-m-d H:i:s');
                    $dns_data['serial'] = $app->validate_dns->increase_serial($dns_data['serial']);
                    $app->db->datalogUpdate('dns_rr', $dns_data, 'id', $dns_data['id']);
                    $zone = $app->db->queryOneRecord("SELECT id, serial FROM dns_soa WHERE active = 'Y' AND id = ?", $dns_data['zone']);
                    $new_serial = $app->validate_dns->increase_serial($zone['serial']);
                    $app->db->datalogUpdate('dns_soa', "serial = '".$new_serial."'", 'id', $zone['id']);
                } else { //* no dkim-record found - create new record
                    $dns_data = $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 = ?", $this->dataRecord['domain'].'.');
                    $dns_data['name'] = $this->dataRecord['dkim_selector'].'._domainkey.'.$this->dataRecord['domain'].'.';
                    $dns_data['type'] = 'TXT';
                    $dns_data['data'] = 'v=DKIM1; t=s; p='.str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"), '', $this->dataRecord['dkim_public']);
                    $dns_data['aux'] = 0;
                    $dns_data['active'] = 'Y';
                    $dns_data['stamp'] = date('Y-m-d H:i:s');
                    $dns_data['serial'] = $app->validate_dns->increase_serial($dns_data['serial']);
                    $app->db->datalogInsert('dns_rr', $dns_data, 'id', $dns_data['zone']);
                    $new_serial = $app->validate_dns->increase_serial($soa_rec['serial']);
                    $app->db->datalogUpdate('dns_soa', "serial = '".$new_serial."'", 'id', $soa_rec['zone']);
                }
            }
        } //* endif add dns-record
    }
    function onBeforeUpdate() {
@@ -343,68 +323,6 @@
            unset($rec);
        }
        //* update dns-record when the dkim record was changed
        // NOTE: only if the domain-name was not changed
        //* get domain-data from the db
        $mail_data = $app->db->queryOneRecord("SELECT * FROM mail_domain WHERE domain = ?", $this->dataRecord['domain']);
        if ( isset($mail_data) && !empty($mail_data) ) {
            $post_data = $mail_data;
            $post_data['dkim_selector'] = $this->dataRecord['dkim_selector'];
            $post_data['dkim_public'] = $this->dataRecord['dkim_public'];
            $post_data['dkim_private'] = $this->dataRecord['dkim_private'];
            if ( isset($this->dataRecord['dkim']) ) $post_data['dkim'] = 'y'; else $post_data['dkim'] = 'n';
            if ( isset($this->dataRecord['active']) ) $post_data['active'] = 'y'; else      $post_data['active'] = 'n';
        }
        //* dkim-value changed
        if ( $mail_data != $post_data ) {
            //* get the dns-record for the public from the db
            $dns_data = $app->db->queryOneRecord("SELECT * FROM dns_rr WHERE name = ? AND sys_groupid = ?", $mail_data['dkim_selector'].'._domainkey.'.$mail_data['domain'].'.', $mail_data['sys_groupid']);
            //* we modify dkim dns-values for active mail-domains only
            if ( $post_data['active'] == 'y' ) {
                if ( $post_data['dkim'] == 'n' ) {
                    $new_dns_data['active'] = 'N';
                } else {
                    if ( $post_data['dkim_selector'] != $mail_data['dkim_selector'] )
                        $new_dns_data['name'] = $post_data['dkim_selector'].'._domainkey.'.$post_data['domain'].'.';
                    if ( $post_data['dkim'] != $mail_data['dkim'] )
                        $new_dns_data['active'] = 'Y';
                    if ( $post_data['active'] != $mail_data['active'] && $post_data['active'] == 'y' )
                        $new_dns_data['active'] = 'Y';
                    if ( $post_data['dkim_public'] != $mail_data['dkim_public'] )
                        $new_dns_data['data'] = 'v=DKIM1; t=s; p='.str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"), '', $post_data['dkim_public']);
                }
            } else $new_dns_data['active'] = 'N';
            if ( isset($dns_data) && !empty($dns_data) && isset($new_dns_data) ) {
                //* update dns-record
                $new_dns_data['serial'] = $app->validate_dns->increase_serial($dns_data['serial']);
                $app->db->datalogUpdate('dns_rr', $new_dns_data, 'id', $dns_data['id']);
                $zone = $app->db->queryOneRecord("SELECT id, serial FROM dns_soa WHERE active = 'Y' AND id = ?", $dns_data['zone']);
                $new_serial = $app->validate_dns->increase_serial($zone['serial']);
                $app->db->datalogUpdate('dns_soa', "serial = '".$new_serial."'", 'id', $zone['id']);
            } else {
                //* create a new dns-record
                $new_dns_data = $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 = ?", $mail_data['domain'].'.');
                //* create a new record only if the dns-zone exists
                if ( isset($new_dns_data) && !empty($new_dns_data) && $post_data['dkim'] == 'y' ) {
                    $new_dns_data['name'] = $post_data['dkim_selector'].'._domainkey.'.$post_data['domain'].'.';
                    $new_dns_data['type'] = 'TXT';
                    $new_dns_data['data'] = 'v=DKIM1; t=s; p='.str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"), '', $post_data['dkim_public']);
                    $new_dns_data['aux'] = 0;
                    $new_dns_data['active'] = 'Y';
                    $new_dns_data['stamp'] = date('Y-m-d H:i:s');
                    $new_dns_data['serial'] = $app->validate_dns->increase_serial($new_dns_data['serial']);
                    $app->db->datalogInsert('dns_rr', $new_dns_data, 'id', $new_dns_data['zone']);
                    $zone = $app->db->queryOneRecord("SELECT id, serial FROM dns_soa WHERE active = 'Y' AND id = ?", $new_dns_data['zone']);
                    $new_serial = $app->validate_dns->increase_serial($zone['serial']);
                    $app->db->datalogUpdate('dns_soa', "serial = '".$new_serial."'", 'id', $zone['id']);
                }
            }
        } //* endif $mail_data != $post_data
    }
    function onAfterUpdate() {
@@ -482,6 +400,65 @@
        } // 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' && $this->dataRecord['domain'] ==  $this->oldDataRecord['domain'] ) {
            $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;
            $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 = ?", $this->dataRecord['domain']);
            if ( ($selector || $dkim_private || $dkim_active) && $dkim_active )
                //* create a new record only if the dns-zone exists
                if ( isset($soa) && !empty($soa) ) {
                    $this->update_dns($this->dataRecord, $soa);
                }
            elseif ( !isset($this->dataRecord['dkim']) ) {
                // updated existing dmarc-record to policy 'none'
                $sql = "SELECT * from dns_rr WHERE name ='_dmarc.?.' AND data LIKE 'v=DMARC1%' AND ?";
                $rec = $app->db->queryOneRecord($sql, $this->dataRecord['domain'], $app->tform->getAuthSQL('r'));
                if (is_array($rec))
                    if (strpos($rec['data'], 'p=none=') === false) {
                        $rec['data'] = str_replace(array('quarantine', 'reject'), 'none', $rec['data']);
                        $app->db->datalogUpdate('dns_rr', $rec, 'id', $rec['id']);
                        $soa_id = $app->functions->intval($soa['zone']);
                        $serial = $app->validate_dns->increase_serial($soa["serial"]);
                        $app->db->datalogUpdate('dns_soa', "serial = $serial", 'id', $soa_id);
                    }
                }
        }
    }
    private function update_dns($dataRecord, $new_rr) {
        global $app, $conf;
        // purge old rr-record(s)
        $sql = "SELECT * FROM dns_rr WHERE name LIKE '%._domainkey.?.' AND data LIKE 'v=DKIM1%' AND ? ORDER BY serial DESC";
        $rec = $app->db->queryAllRecords($sql, $dataRecord['domain'], $app->tform->getAuthSQL('r'));
        if (is_array($rec[1])) {
            for ($i=1; $i < count($rec); ++$i)
                $app->db->datalogDelete('dns_rr', 'id', $rec[$i]['id']);
        }
        // also delete a dsn-records with same selector
        $sql = "SELECT * from dns_rr WHERE name ='?._domainkey.?.' AND data LIKE 'v=DKIM1%' AND ?";
        $rec = $app->db->queryAllRecords($sql, $dataRecord['dkim_selector'], $dataRecord['domain'], $app->tform->getAuthSQL('r'));
        if (is_array($rec))
            foreach ($rec as $del)
                $app->db->datalogDelete('dns_rr', 'id', $del['id']);
        $new_rr['name'] = $dataRecord['dkim_selector'].'._domainkey.'.$dataRecord['domain'].'.';
        $new_rr['type'] = 'TXT';
        $new_rr['data'] = 'v=DKIM1; t=s; p='.str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"), '', $this->dataRecord['dkim_public']);
        $new_rr['aux'] = 0;
        $new_rr['active'] = 'Y';
        $new_rr['stamp'] = date('Y-m-d H:i:s');
        $new_rr['serial'] = $app->validate_dns->increase_serial($new_rr['serial']);
        $app->db->datalogInsert('dns_rr', $new_rr, 'id', $new_rr['zone']);
        $zone = $app->db->queryOneRecord("SELECT id, serial FROM dns_soa WHERE active = 'Y' AND id = ".$app->functions->intval($new_rr['zone']));
        $new_serial = $app->validate_dns->increase_serial($zone['serial']);
        $app->db->datalogUpdate('dns_soa', "serial = '".$new_serial."'", 'id', $zone['id']);
    }
}
interface/web/mail/templates/mail_domain_edit.htm
@@ -102,7 +102,7 @@
              <div class="ctrlHolder">
                <label for="dkim_private">{tmpl_var name='dkim_private_txt'}</label>
                <textarea name="dkim_private" id="dkim_private" rows='10' cols='30'>{tmpl_var name='dkim_private'}</textarea>
<a href="javascript:setRequest('create')">{tmpl_var name='dkim_generate_txt'}</a>
                <a href="javascript:setRequest()">{tmpl_var name='dkim_generate_txt'}</a>
              </div>
        <div class="ctrlHolder">
                <textarea name="dkim_public" style="display:none;" id="dkim_public" rows='5' cols='30' readonly>{tmpl_var name='dkim_public'}</textarea>
server/lib/classes/cron.d/500-backup_mail.inc.php
@@ -75,10 +75,10 @@
                foreach($records as $rec) {
                    //* Do the mailbox backup
                    if($rec['backup_interval'] == 'daily' or ($rec['backup_interval'] == 'weekly' && date('w') == 0) or ($rec['backup_interval'] == 'monthly' && date('d') == '01')) {
                        $email = $rec['email'];
                        $email=explode("@",$email)[1];
                        $domain_rec=$app->db->queryOneRecord("SELECT * FROM mail_domain WHERE domain = ?", $email);
                        unset($email);
                        $temp = explode("@",$email);
                        $domain = $temp[1];
                        unset($temp);;
                        $domain_rec=$app->db->queryOneRecord("SELECT * FROM mail_domain WHERE domain = ?", $domain);
                        $mail_backup_dir = $backup_dir.'/mail'.$domain_rec['domain_id'];
                        if(!is_dir($mail_backup_dir)) mkdir($mail_backup_dir, 0750);
server/plugins-available/mail_plugin_dkim.inc.php
@@ -143,7 +143,12 @@
                    mkdir($mail_config['dkim_path'], 0755, true);
                    $app->log('No user amavis or vscan found - using root for '.$mail_config['dkim_path'], LOGLEVEL_WARNING);
                }
            }
            } else {
                if (!$app->system->checkpath($mail_config['dkim_path'])) {
                    $app->log('Unable to write DKIM settings - invalid DKIM-Path (symlink?)', LOGLEVEL_ERROR);
                    $check=false;
                }
            }
            if (!is_writeable($mail_config['dkim_path'])) {
                $app->log('DKIM Path '.$mail_config['dkim_path'].' not writeable.', LOGLEVEL_ERROR);