dcy
2010-07-17 a59731a3cc9c0fc6fba481e83d56ebd22ed3c87d
Secondary DNS functionality for PowerDNS and Bind
48 files added
81 files modified
1718 ■■■■■ changed files
install/lib/installer_base.lib.php 15 ●●●●● patch | view | raw | blame | history
install/lib/update.lib.php 35 ●●●●● patch | view | raw | blame | history
install/sql/ispconfig3.sql 27 ●●●●● patch | view | raw | blame | history
install/sql/powerdns.sql 6 ●●●● patch | view | raw | blame | history
install/tpl/pdns.local.master 5 ●●●●● patch | view | raw | blame | history
install/update.php 2 ●●● patch | view | raw | blame | history
interface/web/client/client_del.php 6 ●●●● patch | view | raw | blame | history
interface/web/client/form/client.tform.php 16 ●●●●● patch | view | raw | blame | history
interface/web/client/form/client_template.tform.php 14 ●●●●● patch | view | raw | blame | history
interface/web/client/form/reseller.tform.php 16 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/ar_client.lng 5 ●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/ar_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/ar_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/bg_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/bg_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/bg_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/br_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/br_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/br_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/cz_client.lng 4 ●●● patch | view | raw | blame | history
interface/web/client/lib/lang/cz_client_template.lng 4 ●●● patch | view | raw | blame | history
interface/web/client/lib/lang/cz_reseller.lng 4 ●●● patch | view | raw | blame | history
interface/web/client/lib/lang/de_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/de_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/de_reseller.lng 6 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/en_client.lng 2 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/en_client_template.lng 4 ●●● patch | view | raw | blame | history
interface/web/client/lib/lang/en_reseller.lng 4 ●●● patch | view | raw | blame | history
interface/web/client/lib/lang/es_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/es_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/es_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/fi_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/fi_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/fi_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/fr_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/fr_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/fr_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/hu_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/hu_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/hu_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/it_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/it_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/it_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/ja_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/ja_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/ja_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/nl_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/nl_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/nl_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/pl_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/pl_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/pl_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/pt_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/pt_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/pt_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/ro_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/ro_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/ro_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/ru_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/ru_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/ru_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/se_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/se_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/se_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/sk_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/sk_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/sk_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/tr_client.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/tr_client_template.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/tr_reseller.lng 3 ●●●●● patch | view | raw | blame | history
interface/web/client/templates/client_edit_limits.htm 4 ●●●● patch | view | raw | blame | history
interface/web/client/templates/client_template_edit_limits.htm 4 ●●●● patch | view | raw | blame | history
interface/web/client/templates/reseller_edit_limits.htm 4 ●●●● patch | view | raw | blame | history
interface/web/dashboard/dashlets/limits.php 6 ●●●● patch | view | raw | blame | history
interface/web/dashboard/lib/lang/de_dashlet_limits.lng 1 ●●●● patch | view | raw | blame | history
interface/web/dashboard/lib/lang/en_dashlet_limits.lng 1 ●●●● patch | view | raw | blame | history
interface/web/dns/dns_slave_del.php 69 ●●●●● patch | view | raw | blame | history
interface/web/dns/dns_slave_edit.php 199 ●●●●● patch | view | raw | blame | history
interface/web/dns/dns_slave_list.php 25 ●●●●● patch | view | raw | blame | history
interface/web/dns/dns_soa_edit.php 9 ●●●● patch | view | raw | blame | history
interface/web/dns/form/dns_slave.tform.php 126 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ar_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ar_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/bg_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/bg_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/br_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/br_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/cz_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/cz_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/de_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/de_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/en_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/en_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/es_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/es_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/fi_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/fi_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/fr_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/fr_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/hu_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/hu_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/it_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/it_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ja_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ja_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/nl_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/nl_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/pl_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/pl_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/pt_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/pt_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ro_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ro_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ru_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/ru_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/se_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/se_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/sk_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/sk_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/tr_dns_slave.lng 14 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/tr_dns_slave_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/module.conf.php 8 ●●●●● patch | view | raw | blame | history
interface/web/dns/list/dns_slave.list.php 97 ●●●●● patch | view | raw | blame | history
interface/web/dns/templates/dns_slave_edit.htm 61 ●●●●● patch | view | raw | blame | history
interface/web/dns/templates/dns_slave_list.htm 59 ●●●●● patch | view | raw | blame | history
server/conf/bind_named.conf.local.slave 9 ●●●●● patch | view | raw | blame | history
server/mods-available/dns_module.inc.php 58 ●●●●● patch | view | raw | blame | history
server/plugins-available/bind_plugin.inc.php 111 ●●●●● patch | view | raw | blame | history
server/plugins-available/powerdns_plugin.inc.php 96 ●●●● patch | view | raw | blame | history
install/lib/installer_base.lib.php
@@ -936,7 +936,20 @@
    public function configure_bind() {
        global $conf;
        //* Nothing to do
        //* Check if the zonefile directory has a slash at the end
        $content=$conf['bind']['bind_zonefiles_dir'];
        if(substr($content,-1,1) != '/') {
            $content .= '/';
        }
        //* Create the slave subdirectory
        $content .= 'slave';
        $content_mkdir = 'mkdir -p '.$content;
        exec($content_mkdir);
        //* Chown the slave subdirectory to $conf['bind']['bind_user']
        exec('chown '.$conf['bind']['bind_user'].':'.$conf['bind']['bind_group'].' '.$content);
        exec('chmod 770 '.$content);
    }
install/lib/update.lib.php
@@ -60,6 +60,21 @@
    copy('existing_db.sql',$backup_db_name);
    exec("chmod 700 $backup_db_name");
    exec("chown root:root $backup_db_name");
    if ($conf['powerdns']['installed']) {
        //** export the current PowerDNS database data
            if( !empty($conf["mysql"]["admin_password"]) ) {
                    system("mysqldump -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' -p'".$conf['mysql']['admin_password']."' -c -t --add-drop-table --create-options --quick --result-file=existing_powerdns_db.sql ".$conf['powerdns']['database']);
            } else {
                    system("mysqldump -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' -c -t --add-drop-table --create-options --quick --result-file=existing_powerdns_db.sql ".$conf['powerdns']['database']);
            }
        // create a backup copy of the PowerDNS database in the root folder
        $backup_db_name = '/root/ispconfig_powerdns_db_backup_'.@date('Y-m-d_h-i').'.sql';
            copy('existing_powerdns_db.sql',$backup_db_name);
            exec("chmod 700 $backup_db_name");
            exec("chown root:root $backup_db_name");
    }
}
function updateDbAndIni() {
@@ -134,6 +149,26 @@
        } else {
            system("mysql --default-character-set=".$conf['mysql']['charset']." --force -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' ".$conf['mysql']['database']." < existing_db.sql");
        }
        if ($conf['powerdns']['installed']) {
            swriteln($inst->lng('Starting full PowerDNS database update.'));
            //** Delete the old PowerDNS database
            if( !$inst->db->query('DROP DATABASE IF EXISTS '.$conf['powerdns']['database']) ) {
                $inst->error('Unable to drop MySQL database: '.$conf['powerdns']['database'].'.');
            }
            //** Create the mysql database
            $inst->configure_powerdns();
            //** load old data back into the PowerDNS database
            if( !empty($conf["mysql"]["admin_password"]) ) {
                system("mysql --default-character-set=".$conf['mysql']['charset']." --force -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' -p'".$conf['mysql']['admin_password']."' ".$conf['powerdns']['database']." < existing_powerdns_db.sql");
            } else {
                system("mysql --default-character-set=".$conf['mysql']['charset']." --force -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' ".$conf['powerdns']['database']." < existing_powerdns_db.sql");
            }
        }
    }
install/sql/ispconfig3.sql
@@ -92,6 +92,7 @@
  `limit_webdav_user` int(11) NOT NULL default '0',
  `default_dnsserver` int(11) unsigned NOT NULL default '1',
  `limit_dns_zone` int(11) NOT NULL default '-1',
  `limit_dns_slave_zone` int(11) NOT NULL default '-1',
  `limit_dns_record` int(11) NOT NULL default '-1',
  `default_dbserver` int(11) NOT NULL default '1',
  `limit_database` int(11) NOT NULL default '-1',
@@ -148,6 +149,7 @@
  `limit_shell_user` int(11) NOT NULL default '0',
  `limit_webdav_user` int(11) NOT NULL default '0',
  `limit_dns_zone` int(11) NOT NULL default '-1',
  `limit_dns_slave_zone` int(11) NOT NULL default '-1',
  `limit_dns_record` int(11) NOT NULL default '-1',
  `limit_database` int(11) NOT NULL default '-1',
  `limit_cron` int(11) NOT NULL default '0',
@@ -162,7 +164,7 @@
-- --------------------------------------------------------
-- 
-- Table structure for table  `dns_rr`
-- Table structure for table  `cron`
-- 
CREATE TABLE `cron` (
  `id` int(11) unsigned NOT NULL auto_increment,
@@ -246,6 +248,29 @@
-- --------------------------------------------------------
--
-- Table structure for table  `dns_slave`
--
CREATE TABLE `dns_slave` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `sys_userid` int(11) unsigned NOT NULL,
  `sys_groupid` int(11) unsigned NOT NULL,
  `sys_perm_user` varchar(5) NOT NULL,
  `sys_perm_group` varchar(5) NOT NULL,
  `sys_perm_other` varchar(5) NOT NULL,
  `server_id` int(11) NOT NULL default '1',
  `origin` varchar(255) NOT NULL,
  `ns` varchar(255) NOT NULL,
  `active` enum('N','Y') NOT NULL,
  `xfer` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `origin` (`origin`),
  KEY `active` (`active`)
) ENGINE=MyISAM AUTO_INCREMENT=1;
-- --------------------------------------------------------
-- 
-- Table structure for table  `dns_template`
-- 
install/sql/powerdns.sql
@@ -9,7 +9,7 @@
  `ispconfig_id` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `name_index` (`name`)
) ENGINE=MyISAM;
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `records` (
  `id` int(11) NOT NULL auto_increment,
@@ -25,10 +25,10 @@
  KEY `rec_name_index` (`name`),
  KEY `nametype_index` (`name`,`type`),
  KEY `domain_id` (`domain_id`)
) ENGINE=MyISAM;
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `supermasters` (
  `ip` varchar(25) NOT NULL,
  `nameserver` varchar(255) NOT NULL,
  `account` varchar(40) default NULL
) ENGINE=MyISAM;
) ENGINE=InnoDB;
install/tpl/pdns.local.master
@@ -7,3 +7,8 @@
gmysql-user={mysql_server_ispconfig_user}
gmysql-password={mysql_server_ispconfig_password}
gmysql-dbname={powerdns_database}
slave=yes
master=yes
disable-axfr=no
install/update.php
@@ -76,7 +76,7 @@
$conf_old = $conf;
unset($conf);
if($dist['id'] == '') die('Linux Dustribution or Version not recognized.');
if($dist['id'] == '') die('Linux Distribution or Version not recognized.');
//** Include the distribution specific installer class library and configuration
if(is_file('dist/lib/'.$dist['baseid'].'.lib.php')) include_once('dist/lib/'.$dist['baseid'].'.lib.php');
interface/web/client/client_del.php
@@ -78,7 +78,7 @@
        $client_group = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = $client_id");
        
        // Get all records (sub-clients, mail, web, etc....)  of this client.
        $tables = 'client,dns_rr,dns_soa,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_domain,web_traffic';
        $tables = 'client,dns_rr,dns_soa,dns_slave,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_domain,web_traffic';
        $tables_array = explode(',',$tables);
        $client_group_id = intval($client_group['groupid']);
        $table_list = array();
@@ -127,7 +127,7 @@
            $app->db->query("DELETE FROM sys_user WHERE client_id = $client_id");
            
            // Delete all records (sub-clients, mail, web, etc....)  of this client.
            $tables = 'client,dns_rr,dns_soa,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_domain,web_traffic';
            $tables = 'client,dns_rr,dns_soa,dns_slave,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_domain,web_traffic';
            $tables_array = explode(',',$tables);
            $client_group_id = intval($client_group['groupid']);
            if($client_group_id > 1) {
@@ -163,4 +163,4 @@
$page = new page_action;
$page->onDelete()
?>
?>
interface/web/client/form/client.tform.php
@@ -665,6 +665,20 @@
            'rows'        => '',
            'cols'        => ''
        ),
                'limit_dns_slave_zone' => array (
                        'datatype'      => 'INTEGER',
                        'formtype'      => 'TEXT',
                        'validators'    => array (      0 => array (    'type'  => 'ISINT',
                                                                                                                'errmsg'=> 'limit_dns_slave_zone_error_notint'),
                                                                        ),
                        'default'       => '-1',
                        'value'         => '',
                        'separator'     => '',
                        'width'         => '10',
                        'maxlength'     => '10',
                        'rows'          => '',
                        'cols'          => ''
                ),
        'limit_dns_record' => array (
            'datatype'    => 'INTEGER',
            'formtype'    => 'TEXT',
@@ -796,4 +810,4 @@
*/
?>
?>
interface/web/client/form/client_template.tform.php
@@ -395,6 +395,20 @@
            'rows'        => '',
            'cols'        => ''
        ),
                'limit_dns_slave_zone' => array (
                        'datatype'      => 'INTEGER',
                        'formtype'      => 'TEXT',
                        'validators'    => array (      0 => array (    'type'  => 'ISINT',
                                                                                                                'errmsg'=> 'limit_dns_slave_zone_error_notint'),
                                                                        ),
                        'default'       => '0',
                        'value'         => '',
                        'separator'     => '',
                        'width'         => '10',
                        'maxlength'     => '10',
                        'rows'          => '',
                        'cols'          => ''
                ),
        'limit_dns_record' => array (
            'datatype'    => 'INTEGER',
            'formtype'    => 'TEXT',
interface/web/client/form/reseller.tform.php
@@ -624,6 +624,20 @@
            'rows'        => '',
            'cols'        => ''
        ),
                'limit_dns_slave_zone' => array (
                        'datatype'      => 'INTEGER',
                        'formtype'      => 'TEXT',
                        'validators'    => array (      0 => array (    'type'  => 'ISINT',
                                                                                                                'errmsg'=> 'limit_dns_slave_zone_error_notint'),
                                                                        ),
                        'default'       => '-1',
                        'value'         => '',
                        'separator'     => '',
                        'width'         => '10',
                        'maxlength'     => '10',
                        'rows'          => '',
                        'cols'          => ''
                ),
        'limit_dns_record' => array (
            'datatype'    => 'INTEGER',
            'formtype'    => 'TEXT',
@@ -758,4 +772,4 @@
*/
?>
?>
interface/web/client/lib/lang/ar_client.lng
@@ -54,6 +54,7 @@
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['default_dnsserver_txt'] = 'Default DNS Server';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['limit_client_txt'] = 'Max. number of Clients';
@@ -77,7 +78,9 @@
$wb['limit_web_subdomain_error_notint'] = 'The website subdomain limit must be a number.';
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns zone limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Default Database Server';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['limit_cron_error_notint'] = 'The cron limit must be a number.';
interface/web/client/lib/lang/ar_client_template.lng
@@ -25,6 +25,7 @@
$wb['limit_web_subdomain_txt'] = 'Max. number of web subdomains';
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['limit_client_txt'] = 'Max. number of Clients';
@@ -47,6 +48,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['limit_cron_error_notint'] = 'The cron limit must be a number.';
$wb['limit_cron_error_frequency'] = 'The cron frequency limit must be a number.';
interface/web/client/lib/lang/ar_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['default_dnsserver_txt'] = 'Default DNS Server';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['limit_client_txt'] = 'Max. number of Clients';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Default Database Server';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['limit_cron_error_notint'] = 'The cron limit must be a number.';
interface/web/client/lib/lang/bg_client.lng
@@ -52,6 +52,7 @@
$wb['default_dnsserver_txt'] = 'DNS сървър по подразбиране';
$wb['limit_dns_zone_txt'] = 'Макс. брой DNS зони';
$wb['limit_dns_record_txt'] = 'Макс. брой DNS записи';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_shell_user_txt'] = 'Макс. брой Shell потребители';
$wb['username_error_empty'] = 'Не е попълнено потребителско име.';
$wb['username_error_unique'] = 'Избраното потребителско име е вече заето.';
@@ -73,6 +74,8 @@
$wb['limit_ftp_user_error_notint'] = 'Макс. брой FTP потребители трябва да е число.';
$wb['limit_shell_user_error_notint'] = 'Макс. брой shell потребители трябва да е число.';
$wb['limit_dns_zone_error_notint'] = 'Макс. брой DNS записи трябва да е число.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'DB сървър по подразбиране';
$wb['limit_database_error_notint'] = 'Макс. брой бази данни трябва да е число.';
$wb['username_error_regex'] = 'Потребителското име съдържа невалидни символи.';
interface/web/client/lib/lang/bg_client_template.lng
@@ -22,6 +22,7 @@
$wb['limit_web_subdomain_txt'] = 'Max. number of web subdomains';
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['limit_maildomain_error_notint'] = 'The email domain limit must be a number.';
@@ -42,6 +43,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['error_template_name_empty'] = 'Please enter a Template name';
$wb['limit_cron_txt'] = 'Max. number of cron jobs';
interface/web/client/lib/lang/bg_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['default_dnsserver_txt'] = 'Default DNS Server';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['limit_client_txt'] = 'Max. number of Clients';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Default Database Server';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['limit_cron_error_notint'] = 'The cron limit must be a number.';
interface/web/client/lib/lang/br_client.lng
@@ -50,6 +50,7 @@
$wb['limit_ftp_user_txt'] = 'Número máximo de usuários FTP';
$wb['default_dnsserver_txt'] = 'Servidor de Nomes Padrão';
$wb['limit_dns_zone_txt'] = 'Número máximo de zonas DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Número máximo de registros DNS';
$wb['limit_shell_user_txt'] = 'Número máximo de usuários de shell';
$wb['limit_client_txt'] = 'Número máximo de clientes';
@@ -73,6 +74,8 @@
$wb['limit_ftp_user_error_notint'] = 'O limite de usuários de FTP deve ser um número.';
$wb['limit_shell_user_error_notint'] = 'O limite de usuários de Shell deve ser um número.';
$wb['limit_dns_zone_error_notint'] = 'O limite de registros de DNS deve ser um número';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Servidor de Banco de Dados Padrão';
$wb['limit_database_error_notint'] = 'O limite de banco de dados deve ser um número';
$wb['username_error_regex'] = 'O nome de usuário contem caracteres inválidos.';
interface/web/client/lib/lang/br_client_template.lng
@@ -21,6 +21,7 @@
$wb['limit_web_subdomain_txt'] = 'Número máximo de sub-domínios';
$wb['limit_ftp_user_txt'] = 'Número máximo de usuários de FTP';
$wb['limit_dns_zone_txt'] = 'Número máximo de zonas DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Número máximo de registros DNS';
$wb['limit_shell_user_txt'] = 'Número máximo de usuários de Shell';
$wb['limit_client_txt'] = 'Número máximo de clientes';
@@ -42,6 +43,8 @@
$wb['limit_ftp_user_error_notint'] = 'O limite de contas FTP deve ser um número';
$wb['limit_shell_user_error_notint'] = 'O limite de contas shell DNS deve ser um número';
$wb['limit_dns_zone_error_notint'] = 'O limite de zonas DNS deve ser um número';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'O limite dos bancos de dados deve ser um número';
$wb['error_template_name_empty'] = 'Por favor insira o nome do gabarito';
$wb['limit_cron_txt'] = 'Número máximo de tarefas no cron';
interface/web/client/lib/lang/br_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['default_dnsserver_txt'] = 'Servidor DNS Padrão';
$wb['limit_dns_zone_txt'] = 'Máximo de zonas DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Máximo de registros DNS';
$wb['limit_shell_user_txt'] = 'Número máximo de usuários de shell';
$wb['limit_client_txt'] = 'Número máximo de clientes';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'O limite de usuários de ftp deve ser um número.';
$wb['limit_shell_user_error_notint'] = 'O limite de usuários de shell deve ser um número.';
$wb['limit_dns_zone_error_notint'] = 'O limite de registros de dns deve ser um número.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Servidor de Banco de Dados Padrão';
$wb['limit_database_error_notint'] = 'O limite de banco de dados deve ser um número.';
$wb['limit_cron_error_notint'] = 'O limite do cron deve ser um número.';
interface/web/client/lib/lang/cz_client.lng
@@ -54,6 +54,7 @@
$wb["limit_ftp_user_txt"] = 'Max. počet FTP uživatelů';
$wb["default_dnsserver_txt"] = 'Výchozí DNS server';
$wb["limit_dns_zone_txt"] = 'Max. počet DNS zón';
$wb["limit_dns_slave_zone_txt"] = 'Max. number of secondary DNS zones';
$wb["limit_dns_record_txt"] = 'Max. počet DNS záznamů';
$wb["limit_shell_user_txt"] = 'Max. počet shell uživatelů';
$wb["limit_client_txt"] = 'Max. počet klientů';
@@ -78,7 +79,8 @@
$wb["limit_ftp_user_error_notint"] = 'Limit FTP uživatelů musí být číslo.';
$wb["limit_shell_user_error_notint"] = 'Limit shell uživatelů musí být číslo.';
$wb["limit_dns_zone_error_notint"] = 'Limit DNS zón musí být číslo.';
$wb["limit_dns_zone_error_notint"] = 'Limit DNS záznamů musí být číslo.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb["limit_dns_record_error_notint"] = 'Limit DNS záznamů musí být číslo.';
$wb["limit_client_error_notint"] = 'Limit sub klientů musí být číslo.';
$wb["default_dbserver_txt"] = 'Výchozí databázový server';
$wb["limit_database_txt"] = 'Max. počet databází';
interface/web/client/lib/lang/cz_client_template.lng
@@ -26,6 +26,7 @@
$wb["limit_web_subdomain_txt"] = 'Max. počet webových subdomén';
$wb["limit_ftp_user_txt"] = 'Max. počet FTP uživatelů';
$wb["limit_dns_zone_txt"] = 'Max. počet DNS zón';
$wb["limit_dns_slave_zone_txt"] = 'Max. number of secondary DNS zones';
$wb["limit_dns_record_txt"] = 'Max. počet DNS záznamů';
$wb["limit_shell_user_txt"] = 'Max. počet shell uživatelů';
$wb["limit_client_txt"] = 'Max. počet klient';
@@ -47,7 +48,8 @@
$wb["limit_web_subdomain_error_notint"] = 'Limit webových subdomén musí být číslo.';
$wb["limit_ftp_user_error_notint"] = 'Limit shell uživatelů musí být číslo.';
$wb["limit_dns_zone_error_notint"] = 'Limit DNS zón musí být číslo.';
$wb["limit_dns_zone_error_notint"] = 'Limit DNS záznamů musí být číslo.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb["limit_dns_record_error_notint"] = 'Limit DNS záznamů musí být číslo.';
$wb["limit_database_txt"] = 'Max. počet databází';
$wb["limit_database_error_notint"] = 'Limit databází musí být číslo.';
$wb["limit_cron_error_notint"] = 'Limit cronu musí být číslo.';
interface/web/client/lib/lang/cz_reseller.lng
@@ -53,6 +53,7 @@
$wb["limit_ftp_user_txt"] = 'Max. počet FTP uživatelů';
$wb["default_dnsserver_txt"] = 'Výchozí DNS server';
$wb["limit_dns_zone_txt"] = 'Max. počet DNS zón';
$wb["limit_dns_slave_zone_txt"] = 'Max. number of secondary DNS zones';
$wb["limit_dns_record_txt"] = 'Max. počet DNS záznamů';
$wb["limit_shell_user_txt"] = 'Max. počet shell uživatelů';
$wb["limit_client_txt"] = 'Max. počet klient';
@@ -76,7 +77,8 @@
$wb["limit_ftp_user_error_notint"] = 'Limit FTP uživatelů musí být číslo.';
$wb["limit_shell_user_error_notint"] = 'Limit shell uživatelů musí být číslo.';
$wb["limit_dns_zone_error_notint"] = 'Limit DNS zón musí být číslo.';
$wb["limit_dns_zone_error_notint"] = 'Limit DNS záznamů musí být číslo.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb["limit_dns_zone_record_notint"] = 'Limit DNS záznamů musí být číslo.';
$wb["limit_client_error_notint"] = 'Limit sub klientů musí být číslo.';
$wb["default_dbserver_txt"] = 'Výchozí databázový server';
$wb["limit_database_txt"] = 'Max. počet databází';
interface/web/client/lib/lang/de_client.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. Anzahl an FTP Benutzer';
$wb['default_dnsserver_txt'] = 'Standard DNS Server';
$wb['limit_dns_zone_txt'] = 'Max. Anzahl an DNS Zonen';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. Anzahl an DNS Einträge';
$wb['limit_shell_user_txt'] = 'Max. Anzahl an Shell Benutzer';
$wb['limit_webdav_user_txt'] = 'Max. Anzahl an Webdav Benutzer';
@@ -77,6 +78,8 @@
$wb['limit_shell_user_error_notint'] = 'Das Shell Benutzer Limit muss eine Nummer sein.';
$wb['limit_webdav_user_error_notint'] = 'Das Webdav Benutzer Limit muss eine Nummer sein.';
$wb['limit_dns_zone_error_notint'] = 'Das DNS Einträge Limit muss eine Nummer sein.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Standarddatenbankserver';
$wb['limit_database_error_notint'] = 'Das Datenbank Limit muss eine Nummer sein.';
$wb['limit_cron_error_notint'] = 'Das Cron Job Limit muss eine Nummer sein.';
interface/web/client/lib/lang/de_client_template.lng
@@ -25,6 +25,7 @@
$wb['limit_web_subdomain_txt'] = 'Max. Anzahl an Web Subdomains';
$wb['limit_ftp_user_txt'] = 'Max. Anzahl an FTP Benutzer';
$wb['limit_dns_zone_txt'] = 'Max. Anzahl an DNS Zonen';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. Anzahl an DNS Einträgen';
$wb['limit_shell_user_txt'] = 'Max. Anzahl an Shell Benutzer';
$wb['limit_webdav_user_txt'] = 'Max. Anzahl an Webdav Benutzer';
@@ -47,6 +48,8 @@
$wb['limit_shell_user_error_notint'] = 'Das Shell Benutzer Limit muss eine Nummer sein.';
$wb['limit_webdav_user_error_notint'] = 'Das Webdav Benutzer Limit muss eine Nummer sein.';
$wb['limit_dns_zone_error_notint'] = 'Das DNS Einträge Limit muss eine Nummer sein.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'Das Datenbanken Limit muss eine Nummer sein.';
$wb['limit_cron_error_notint'] = 'Das Cron Job Limit muss eine Nummer sein.';
$wb['limit_cron_error_frequency'] = 'Das Cron Job Intervall-Limit muss eine Nummer sein.';
interface/web/client/lib/lang/de_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. Anzahl an FTP Benutzer';
$wb['default_dnsserver_txt'] = 'Standard DNS Server';
$wb['limit_dns_zone_txt'] = 'Max. Anzahl an DNS Zonen';
$wb['limit_dns_slave_zone_txt'] = 'Max. Anzahl an sekundären DNS Zonen';
$wb['limit_dns_record_txt'] = 'Max. Anzahl an DNS Einträge';
$wb['limit_shell_user_txt'] = 'Max. Anzahl an Shell Benutzer';
$wb['limit_client_txt'] = 'Max. Anzahl an Kunden';
@@ -75,7 +76,9 @@
$wb['limit_web_subdomain_error_notint'] = 'Das Webseite Subdomain Limit muss eine Nummer sein.';
$wb['limit_ftp_user_error_notint'] = 'Das FTP Benutzer Limit muss eine Nummer sein.';
$wb['limit_shell_user_error_notint'] = 'Das Shell Benutzer Limit muss eine Nummer sein.';
$wb['limit_dns_zone_error_notint'] = 'Das DNS Einträge Limit muss eine Nummer sein.';
$wb['limit_dns_zone_error_notint'] = 'Das DNS Zonen Limit muss eine Nummer sein.';
$wb['limit_dns_slave_zone_error_notint'] = 'Das sekundär DNS Einträge Limit muss eine Nummer sein.';
$wb['limit_dns_record_error_notint'] = 'Das DNS Einträge Limit muss eine Nummer sein.';
$wb['default_dbserver_txt'] = 'Standarddatenbankserver';
$wb['limit_database_error_notint'] = 'Das Datenbank Limit muss eine Nummer sein.';
$wb['limit_cron_error_notint'] = 'Das Cron Job Limit muss eine Zahl sein.';
@@ -91,4 +94,3 @@
$wb['limit_traffic_quota_txt'] = 'Traffic Quota';
$wb['limit_trafficquota_error_notint'] = 'Traffic Quota muss eine Zahl sein.';
?>
interface/web/client/lib/lang/en_client.lng
@@ -54,6 +54,7 @@
$wb["limit_ftp_user_txt"] = 'Max. number of FTP users';
$wb["default_dnsserver_txt"] = 'Default DNS Server';
$wb["limit_dns_zone_txt"] = 'Max. number of DNS zones';
$wb["limit_dns_slave_zone_txt"] = 'Max. number of secondary DNS zones';
$wb["limit_dns_record_txt"] = 'Max. number DNS records';
$wb["limit_shell_user_txt"] = 'Max. number of Shell users';
$wb["limit_webdav_user_txt"] = 'Max. number of Webdav users';
@@ -80,6 +81,7 @@
$wb["limit_shell_user_error_notint"] = 'The shell user limit must be a number.';
$wb["limit_webdav_user_error_notint"] = 'The webdav user limit must be a number.';
$wb["limit_dns_zone_error_notint"] = 'The dns zone limit must be a number.';
$wb["limit_dns_slave_zone_error_notint"] = 'The dns slave zone limit must be a number.';
$wb["limit_dns_zone_error_notint"] = 'The dns record limit must be a number.';
$wb["limit_client_error_notint"] = 'The sub client limit must be a number.';
$wb["default_dbserver_txt"] = 'Default Database Server';
interface/web/client/lib/lang/en_client_template.lng
@@ -26,6 +26,7 @@
$wb["limit_web_subdomain_txt"] = 'Max. number of web subdomains';
$wb["limit_ftp_user_txt"] = 'Max. number of FTP users';
$wb["limit_dns_zone_txt"] = 'Max. number of DNS zones';
$wb["limit_dns_slave_zone_txt"] = 'Max. number of secondary DNS zones';
$wb["limit_dns_record_txt"] = 'Max. number DNS records';
$wb["limit_shell_user_txt"] = 'Max. number of Shell users';
$wb["limit_webdav_user_txt"] = 'Max. number of Webdav users';
@@ -50,7 +51,8 @@
$wb["limit_shell_user_error_notint"] = 'The shell user limit must be a number.';
$wb["limit_webdav_user_error_notint"] = 'The webdav user limit must be a number.';
$wb["limit_dns_zone_error_notint"] = 'The dns zone limit must be a number.';
$wb["limit_dns_zone_error_notint"] = 'The dns record limit must be a number.';
$wb["limit_dns_slave_zone_error_notint"] = 'The dns slave zone limit must be a number.';
$wb["limit_dns_record_error_notint"] = 'The dns record limit must be a number.';
$wb["limit_database_txt"] = 'Max. number of Databases';
$wb["limit_database_error_notint"] = 'The database limit must be a number.';
$wb["limit_cron_error_notint"] = 'The cron limit must be a number.';
interface/web/client/lib/lang/en_reseller.lng
@@ -53,6 +53,7 @@
$wb["limit_ftp_user_txt"] = 'Max. number of FTP users';
$wb["default_dnsserver_txt"] = 'Default DNS Server';
$wb["limit_dns_zone_txt"] = 'Max. number of DNS zones';
$wb["limit_dns_slave_zone_txt"] = 'Max. number of secondary DNS zones';
$wb["limit_dns_record_txt"] = 'Max. number DNS records';
$wb["limit_shell_user_txt"] = 'Max. number of Shell users';
$wb["limit_client_txt"] = 'Max. number of Clients';
@@ -76,7 +77,8 @@
$wb["limit_ftp_user_error_notint"] = 'The ftp user limit must be a number.';
$wb["limit_shell_user_error_notint"] = 'The shell user limit must be a number.';
$wb["limit_dns_zone_error_notint"] = 'The dns zone limit must be a number.';
$wb["limit_dns_zone_error_notint"] = 'The dns record limit must be a number.';
$wb["limit_dns_slave_zone_error_notint"] = 'The dns slave zone limit must be a number.';
$wb["limit_dns_record_error_notint"] = 'The dns record limit must be a number.';
$wb["limit_client_error_notint"] = 'The sub client limit must be a number.';
$wb["default_dbserver_txt"] = 'Default Database Server';
$wb["limit_database_txt"] = 'Max. number of Databases';
interface/web/client/lib/lang/es_client.lng
@@ -51,6 +51,7 @@
$wb['limit_ftp_user_txt'] = 'Número máximo de usuarios FTP';
$wb['default_dnsserver_txt'] = 'Servidor DNS por defecto';
$wb['limit_dns_zone_txt'] = 'Número máximo de zonas DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Número máximo de registros DNS';
$wb['limit_shell_user_txt'] = 'Número máximo de usuarios de consola';
$wb['username_error_empty'] = 'El nombre de usuario está vacío.';
@@ -73,6 +74,8 @@
$wb['limit_ftp_user_error_notint'] = 'El límite de usuarios FTP debe ser un número';
$wb['limit_shell_user_error_notint'] = 'El límite de usuarios de consola debe ser un número';
$wb['limit_dns_zone_error_notint'] = 'El límite de zonas DNS debe ser un número';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Servidor de bases de datos por defecto';
$wb['limit_database_error_notint'] = 'El límite de bases de datos debe ser un número';
$wb['username_error_regex'] = 'El usuario contiene carácteres no válidos';
interface/web/client/lib/lang/es_client_template.lng
@@ -22,6 +22,7 @@
$wb['limit_web_subdomain_txt'] = 'Número máximo de subdominios';
$wb['limit_ftp_user_txt'] = 'Número máximo de usuarios FTP';
$wb['limit_dns_zone_txt'] = 'Número máximo de zonas DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Número máximo de registros DNS';
$wb['limit_shell_user_txt'] = 'Número máximo de usuarios de consola';
$wb['limit_maildomain_error_notint'] = 'El límite de dominios de correo debe ser un número.';
@@ -42,6 +43,8 @@
$wb['limit_ftp_user_error_notint'] = 'El límite de usuarios FTP debe ser un número.';
$wb['limit_shell_user_error_notint'] = 'El límite de usuarios de consola debe ser un número.';
$wb['limit_dns_zone_error_notint'] = 'El límite de registros DNS debe ser un número.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'El límite de bases de datos debe ser un número.';
$wb['error_template_name_empty'] = 'Por favor, introduzca un nombre de plantilla';
$wb['limit_cron_txt'] = 'Número máximo de tareas cron';
interface/web/client/lib/lang/es_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['default_dnsserver_txt'] = 'Default DNS Server';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['limit_client_txt'] = 'Max. number of Clients';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Default Database Server';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['limit_cron_error_notint'] = 'The cron limit must be a number.';
interface/web/client/lib/lang/fi_client.lng
@@ -50,6 +50,7 @@
$wb['limit_ftp_user_txt'] = 'FTP-käyttäjätunnuksien määrä';
$wb['default_dnsserver_txt'] = 'Oletusnimipavelin';
$wb['limit_dns_zone_txt'] = 'DNS-alueiden määrä';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'DNS-tietuieden määrä';
$wb['limit_shell_user_txt'] = 'Shell-käyttäjien määrä';
$wb['username_error_empty'] = 'Käyttäjätunnus on tyhjä';
@@ -72,6 +73,8 @@
$wb['limit_ftp_user_error_notint'] = 'Ftp-käyttäjätunnuksien raja-arvon pitää olla numero.';
$wb['limit_shell_user_error_notint'] = 'Shell-käyttäjätunnuksien raja-arvon pitää olla numero.';
$wb['limit_dns_zone_error_notint'] = 'DNS-tietueiden raja-arvon pitää olla numero.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Oletustietokantapalvelin';
$wb['limit_database_error_notint'] = 'Tietokantojen raja-arvon pitää olla numero.';
$wb['username_error_regex'] = 'Käyttäjätunnus sisältää virheellisiä merkkejä.';
interface/web/client/lib/lang/fi_client_template.lng
@@ -22,6 +22,7 @@
$wb['limit_web_subdomain_txt'] = 'Aliverkkotunnuksien määrä';
$wb['limit_ftp_user_txt'] = 'FTP-käyttäjätunnuksien määrä';
$wb['limit_dns_zone_txt'] = 'DNS-alueiden määrä';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'DNS-tietueiden määrä';
$wb['limit_shell_user_txt'] = 'Shell-käyttäjien määrä';
$wb['limit_maildomain_error_notint'] = 'Postiverkkotunnuksien raja-arvon pitää olla numero.';
@@ -42,6 +43,8 @@
$wb['limit_ftp_user_error_notint'] = 'FTP-käyttäjätunnuksien raja-arvon pitää olla numero.';
$wb['limit_shell_user_error_notint'] = 'Shell-käyttäjätunnuksien raja-arvon pitää olla numero.';
$wb['limit_dns_zone_error_notint'] = 'DNS-tietueiden raja-arvon pitää olla numero.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'Tietokantojen raja-arvon pitää olla numero.';
$wb['error_template_name_empty'] = 'Anna mallilomakkeen nimi';
$wb['limit_cron_txt'] = 'Max. number of cron jobs';
interface/web/client/lib/lang/fi_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['default_dnsserver_txt'] = 'Default DNS Server';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['limit_client_txt'] = 'Max. number of Clients';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Default Database Server';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['limit_cron_error_notint'] = 'The cron limit must be a number.';
interface/web/client/lib/lang/fr_client.lng
@@ -51,6 +51,7 @@
$wb['limit_ftp_user_txt'] = 'Nombre max. dutilisateurs FTP';
$wb['default_dnsserver_txt'] = 'Serveur DNS par défaut';
$wb['limit_dns_zone_txt'] = 'Nombre max. de zones DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Nombre max. denregistrements DNS';
$wb['limit_shell_user_txt'] = 'Nombre max. dutilisateurs Shell';
$wb['username_error_empty'] = 'Le nom dutilisateur est vide.';
@@ -73,6 +74,8 @@
$wb['limit_ftp_user_error_notint'] = 'La limite dutilisateurs FTP doit être un nombre.';
$wb['limit_shell_user_error_notint'] = 'La limite dutilisateurs Shell doit être un nombre.';
$wb['limit_dns_zone_error_notint'] = 'La limite denregistrements DNS doit être un nombre.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Serveur de bases de données par défaut';
$wb['limit_database_error_notint'] = 'La limite de bases de données doit être un nombre.';
$wb['username_error_regex'] = 'Le nom dutilisateur contient des caractères invalides.';
interface/web/client/lib/lang/fr_client_template.lng
@@ -22,6 +22,7 @@
$wb['limit_web_subdomain_txt'] = 'Nombre max. de sous-domaines';
$wb['limit_ftp_user_txt'] = 'Nombre max. dutilisateurs FTP';
$wb['limit_dns_zone_txt'] = 'Nombre max. de zones DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Nombre max. denregistrements DNS';
$wb['limit_shell_user_txt'] = 'Nombre max. dutilisateurs Shell';
$wb['limit_maildomain_error_notint'] = 'La limite de domaines de-mail doit être un nombre.';
@@ -42,6 +43,8 @@
$wb['limit_ftp_user_error_notint'] = 'La limite dutilisateurs FTP doit être un nombre.';
$wb['limit_shell_user_error_notint'] = 'La limite dutilisateurs Shell doit être un nombre.';
$wb['limit_dns_zone_error_notint'] = 'La limite denregistrements DNS doit être un nombre.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'La limite de bases de données doit être un nombre.';
$wb['error_template_name_empty'] = 'Entrez le nom du modèle.';
$wb['limit_cron_txt'] = 'Nombre max. de tâches Cron';
interface/web/client/lib/lang/fr_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Nombre max. dutilisateurs FTP';
$wb['default_dnsserver_txt'] = 'Serveur DNS par défaut';
$wb['limit_dns_zone_txt'] = 'Nombre max. de zones DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Nombre max. denregistrements DNS';
$wb['limit_shell_user_txt'] = 'Nombre max. dutilisateurs Shell';
$wb['limit_client_txt'] = 'Nombre max. de clients';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'La limite dutilisateurs FTP doit être un nombre.';
$wb['limit_shell_user_error_notint'] = 'La limite dutilisateurs Shell doit être un nombre.';
$wb['limit_dns_zone_error_notint'] = 'La limite denregistrements DNS doit être un nombre.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Serveur de bases de données par défaut';
$wb['limit_database_error_notint'] = 'La limite de bases de données doit être un nombre.';
$wb['limit_cron_error_notint'] = 'La limite de tâches Cron doit être un nombre.';
interface/web/client/lib/lang/hu_client.lng
@@ -50,6 +50,7 @@
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['default_dnsserver_txt'] = 'Default DNS Server';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['username_error_empty'] = 'Username is empty.';
@@ -72,6 +73,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Default Database Server';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['username_error_regex'] = 'The Username contains invalid chracaters.';
interface/web/client/lib/lang/hu_client_template.lng
@@ -21,6 +21,7 @@
$wb['limit_web_subdomain_txt'] = 'Max. number of web subdomains';
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['limit_client_txt'] = 'Max. number of Clients';
@@ -42,6 +43,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['error_template_name_empty'] = 'Please enter a Template name';
$wb['limit_cron_txt'] = 'Max. number of cron jobs';
interface/web/client/lib/lang/hu_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['default_dnsserver_txt'] = 'Default DNS Server';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['limit_client_txt'] = 'Max. number of Clients';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Default Database Server';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['limit_cron_error_notint'] = 'The cron limit must be a number.';
interface/web/client/lib/lang/it_client.lng
@@ -50,6 +50,7 @@
$wb['limit_ftp_user_txt'] = 'Numero massimo di utenti FTP';
$wb['default_dnsserver_txt'] = 'DNS Server predefinito';
$wb['limit_dns_zone_txt'] = 'Numero massimo di zone DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Numero massimo di record DNS';
$wb['limit_shell_user_txt'] = 'Numero massimo di utenti Shell';
$wb['username_error_empty'] = 'Nome utente è vuoto.';
@@ -72,6 +73,8 @@
$wb['limit_ftp_user_error_notint'] = 'Il limite degli utenti ftp deve essere un numero.';
$wb['limit_shell_user_error_notint'] = 'Il limite degli utenti shell deve essere un numero.';
$wb['limit_dns_zone_error_notint'] = 'Il limite dei record dns deve essere un numero.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Server Database predefinito';
$wb['limit_database_error_notint'] = 'Il limite dei database deve essere un numero.';
$wb['username_error_regex'] = 'Il nome utente contiene caratteri non validi.';
interface/web/client/lib/lang/it_client_template.lng
@@ -22,6 +22,7 @@
$wb['limit_web_subdomain_txt'] = 'Max. number of web subdomains';
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['limit_maildomain_error_notint'] = 'The email domain limit must be a number.';
@@ -42,6 +43,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['error_template_name_empty'] = 'Devi inserire il nome del modello';
$wb['limit_cron_txt'] = 'Max. number of cron jobs';
interface/web/client/lib/lang/it_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['default_dnsserver_txt'] = 'Default DNS Server';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['limit_client_txt'] = 'Max. number of Clients';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Default Database Server';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['limit_cron_error_notint'] = 'The cron limit must be a number.';
interface/web/client/lib/lang/ja_client.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'FTPユーザーの最大数';
$wb['default_dnsserver_txt'] = 'デフォルトのDNSサーバー';
$wb['limit_dns_zone_txt'] = 'DNSゾーンの最大数';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'DNSレコードの最大数';
$wb['limit_shell_user_txt'] = 'Shellユーザーの最大数';
$wb['limit_client_txt'] = 'クライアントの最大値';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'FTPユーザーの最大数は数字で指定してください。';
$wb['limit_shell_user_error_notint'] = 'Shellユーザーの最大数は数字で指定してください。';
$wb['limit_dns_zone_error_notint'] = 'DNSレコードの最大数は数字で指定してください。';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'デフォルトのデータベースサーバー';
$wb['limit_database_error_notint'] = 'データベースの最大数は数字で指定してください。';
$wb['limit_cron_error_notint'] = 'cronジョブの最大数は数字で指定してください。';
interface/web/client/lib/lang/ja_client_template.lng
@@ -24,6 +24,7 @@
$wb['limit_web_subdomain_txt'] = 'ウェブサブドメインの最大数';
$wb['limit_ftp_user_txt'] = 'FTPユーザーの最大数';
$wb['limit_dns_zone_txt'] = 'DNSゾーンの最大数';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'DNSレコードの最大数';
$wb['limit_shell_user_txt'] = 'Shellユーザーの最大数';
$wb['limit_client_txt'] = 'クライアントの最大値';
@@ -45,6 +46,8 @@
$wb['limit_ftp_user_error_notint'] = 'FTPユーザーの最大数は数字で指定してください。';
$wb['limit_shell_user_error_notint'] = 'Shellユーザーの最大数は数字で指定してください。';
$wb['limit_dns_zone_error_notint'] = 'DNSレコードの最大数は数字で指定してください。';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'データベースの最大数は数字で指定してください。';
$wb['limit_cron_error_notint'] = 'cronジョブの最大数は数字で指定してください。';
$wb['limit_cron_error_frequency'] = 'The cron frequency limit must be a number.';
interface/web/client/lib/lang/ja_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'FTPユーザーの最大数';
$wb['default_dnsserver_txt'] = 'デフォルトのDNSサーバー';
$wb['limit_dns_zone_txt'] = 'DNSゾーンの最大数';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'DNSレコードの最大数';
$wb['limit_shell_user_txt'] = 'Shellユーザーの最大数';
$wb['limit_client_txt'] = 'クライアントの最大値';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'FTPユーザーの最大数は数字で指定してください。';
$wb['limit_shell_user_error_notint'] = 'Shellユーザーの最大数は数字で指定してください。';
$wb['limit_dns_zone_error_notint'] = 'DNSレコードの最大数は数字で指定してください。';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'デフォルトのデータベースサーバー';
$wb['limit_database_error_notint'] = 'データベースの最大数は数字で指定してください。';
$wb['limit_cron_error_notint'] = 'cronジョブの最大数は数字で指定してください。';
interface/web/client/lib/lang/nl_client.lng
@@ -51,6 +51,7 @@
$wb['limit_ftp_user_txt'] = '# FTP gebruikers';
$wb['default_dnsserver_txt'] = 'Standaard DNS server';
$wb['limit_dns_zone_txt'] = '# DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = '# DNS records';
$wb['limit_shell_user_txt'] = '# Shell gebruikers';
$wb['username_error_empty'] = 'Gebruikersnaam is leeg.';
@@ -73,6 +74,8 @@
$wb['limit_ftp_user_error_notint'] = 'De FTP gebruiker limiet moet een nummerieke waarde zijn.';
$wb['limit_shell_user_error_notint'] = 'De Shell gebruiker limit moet een nummerieke waarde zijn.';
$wb['limit_dns_zone_error_notint'] = 'De DNS record limit moet een nummerieke waarde zijn.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Standaard database server';
$wb['limit_database_error_notint'] = 'De database limiet moet een nummerieke waarde zijn.';
$wb['username_error_regex'] = 'De gebruikersnaam bevat ongeldige karakters.';
interface/web/client/lib/lang/nl_client_template.lng
@@ -22,6 +22,7 @@
$wb['limit_web_subdomain_txt'] = '# Website subdomeinen';
$wb['limit_ftp_user_txt'] = '# FTP gebruikers';
$wb['limit_dns_zone_txt'] = '# DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = '# DNS records';
$wb['limit_shell_user_txt'] = '# Shell gebruikers';
$wb['limit_maildomain_error_notint'] = 'De e-mail domein limiet moet een numerieke waarde zijn.';
@@ -42,6 +43,8 @@
$wb['limit_ftp_user_error_notint'] = 'De ftp user limiet moet een numerieke waarde zijn.';
$wb['limit_shell_user_error_notint'] = 'De shell user limiet moet een numerieke waarde zijn.';
$wb['limit_dns_zone_error_notint'] = 'De DNS record limiet moet een numerieke waarde zijn.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'De database limiet moet een numerieke waarde zijn.';
$wb['error_template_name_empty'] = 'Voer a.u.b. de template naam in.';
$wb['limit_cron_txt'] = '# Cron taken';
interface/web/client/lib/lang/nl_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = '# FTP-gebruikers';
$wb['default_dnsserver_txt'] = 'Standaard DNS server';
$wb['limit_dns_zone_txt'] = '# DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = '# DNS records';
$wb['limit_shell_user_txt'] = '# Shell gebruikers';
$wb['limit_client_txt'] = '# Klanten';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'FTP gebruikers limiet moet nummeriek zijn.';
$wb['limit_shell_user_error_notint'] = 'Shell gebruikers limiet moet nummeriek zijn.';
$wb['limit_dns_zone_error_notint'] = 'DNS zones limiet moet nummeriek zijn.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Standaard database server';
$wb['limit_database_error_notint'] = 'Databases limiet moet nummeriek zijn.';
$wb['limit_cron_error_notint'] = 'Cron limiet moet nummeriek zijn.';
interface/web/client/lib/lang/pl_client.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Maksymalna ilość użytkowników FTP';
$wb['default_dnsserver_txt'] = 'Domyślny serwer DNS';
$wb['limit_dns_zone_txt'] = 'Maksymalna ilość stref DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Maksymalna ilość wpisów DNS';
$wb['limit_shell_user_txt'] = 'Maksymalna ilość użytkowników shell';
$wb['limit_client_txt'] = 'Maksymalna ilość klientów';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'Limit użytkowników FTP musi być liczbą.';
$wb['limit_shell_user_error_notint'] = 'Limit użytkowników shell musi być liczbą.';
$wb['limit_dns_zone_error_notint'] = 'Limit wpisów DNS musi być liczbą.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Domyślny serwer bazy danych';
$wb['limit_database_error_notint'] = 'Limit baz danych musi być liczbą.';
$wb['limit_cron_error_notint'] = 'Limit zadań cron musi być liczbą.';
interface/web/client/lib/lang/pl_client_template.lng
@@ -24,6 +24,7 @@
$wb['limit_web_subdomain_txt'] = 'Maksymalna ilość subdomen';
$wb['limit_ftp_user_txt'] = 'Maksymalna ilość uzytkowników FTP';
$wb['limit_dns_zone_txt'] = 'Maksymalna ilość stref DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Maksymalna ilość wpisów DNS';
$wb['limit_shell_user_txt'] = 'Maksymalna ilość użytkowników shell';
$wb['limit_client_txt'] = 'Maksymalna ilość klientów';
@@ -45,6 +46,8 @@
$wb['limit_ftp_user_error_notint'] = 'Limit użytkowników FTP musi być liczbą.';
$wb['limit_shell_user_error_notint'] = 'Limit użytkowników shell musi być liczbą.';
$wb['limit_dns_zone_error_notint'] = 'Limit wpisów DNS musi być liczbą.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'Limit baz danych musi być liczbą.';
$wb['limit_cron_error_notint'] = 'Limit zadań cron musi być liczbą.';
$wb['limit_cron_error_frequency'] = 'Limit częstości zadań corn musi być liczbą.';
interface/web/client/lib/lang/pl_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Maksymalna ilość użytkowników FTP';
$wb['default_dnsserver_txt'] = 'Domyślny serwer DNS';
$wb['limit_dns_zone_txt'] = 'Maksymalna ilość stref DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Maksymalna ilość wpisów DNS';
$wb['limit_shell_user_txt'] = 'Maksymalna ilość użytkowników Shell';
$wb['limit_client_txt'] = 'Maksymalna ilość klientów';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'Limit użytkowników ftp musi być liczbą.';
$wb['limit_shell_user_error_notint'] = 'Limit użytkowników shell musi być liczbą.';
$wb['limit_dns_zone_error_notint'] = 'Limit wpisów DNS musi być liczbą.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Domyślny serwer bazy danych';
$wb['limit_database_error_notint'] = 'Limit baz danych musi być liczbą.';
$wb['limit_cron_error_notint'] = 'Limit zadań crone musi być liczbą.';
interface/web/client/lib/lang/pt_client.lng
@@ -50,6 +50,7 @@
$wb['limit_ftp_user_txt'] = 'Número máximo de utilizadors FTP';
$wb['default_dnsserver_txt'] = 'Servidor de Nomes Padrão';
$wb['limit_dns_zone_txt'] = 'Número máximo de zonas DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Número máximo de registos DNS';
$wb['limit_shell_user_txt'] = 'Número máximo de utilizadors de shell';
$wb['limit_client_txt'] = 'Número máximo de clientes';
@@ -73,6 +74,8 @@
$wb['limit_ftp_user_error_notint'] = 'O limite de utilizadors de FTP deve ser um número.';
$wb['limit_shell_user_error_notint'] = 'O limite de utilizadors de Shell deve ser um número.';
$wb['limit_dns_zone_error_notint'] = 'O limite de registos de DNS deve ser um número';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Servidor de Base de Dados Padrão';
$wb['limit_database_error_notint'] = 'O limite de bases de dados deve ser um número';
$wb['username_error_regex'] = 'O nome de utilizador contem caracteres inválidos.';
interface/web/client/lib/lang/pt_client_template.lng
@@ -21,6 +21,7 @@
$wb['limit_web_subdomain_txt'] = 'Número máximo de sub-domínios';
$wb['limit_ftp_user_txt'] = 'Número máximo de utilizadors de FTP';
$wb['limit_dns_zone_txt'] = 'Número máximo de zonas DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Número máximo de registos DNS';
$wb['limit_shell_user_txt'] = 'Número máximo de utilizadors de Shell';
$wb['limit_client_txt'] = 'Número máximo de clientes';
@@ -42,6 +43,8 @@
$wb['limit_ftp_user_error_notint'] = 'O limite de contas FTP deve ser um número';
$wb['limit_shell_user_error_notint'] = 'O limite de contas shell DNS deve ser um número';
$wb['limit_dns_zone_error_notint'] = 'O limite de zonas DNS deve ser um número';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'O limite de bases de dados deve ser um número';
$wb['error_template_name_empty'] = 'Por favor insira o nome da template';
$wb['limit_cron_txt'] = 'Número máximo de tarefas no cron';
interface/web/client/lib/lang/pt_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['default_dnsserver_txt'] = 'Servidor DNS Padrão';
$wb['limit_dns_zone_txt'] = 'Máximo de zonas DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Máximo de registos DNS';
$wb['limit_shell_user_txt'] = 'Número máximo de utilizadors de shell';
$wb['limit_client_txt'] = 'Número máximo de clientes';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'O limite de utilizadors de ftp deve ser um número.';
$wb['limit_shell_user_error_notint'] = 'O limite de utilizadors de shell deve ser um número.';
$wb['limit_dns_zone_error_notint'] = 'O limite de registos de dns deve ser um número.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Servidor de Base de Dados Padrão';
$wb['limit_database_error_notint'] = 'O limite de bases de dados deve ser um número.';
$wb['limit_cron_error_notint'] = 'O limite do cron deve ser um número.';
interface/web/client/lib/lang/ro_client.lng
@@ -50,6 +50,7 @@
$wb['limit_ftp_user_txt'] = 'Numar maxim de useri FTP';
$wb['default_dnsserver_txt'] = 'Default DNS Server';
$wb['limit_dns_zone_txt'] = 'Numar maxim de  zone DNS ';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Numar maxim de inregistrari DNS ';
$wb['limit_shell_user_txt'] = 'Numar maxim de useri  Shell ';
$wb['limit_client_txt'] = 'Numarul maxim de clienti a fost atins';
@@ -73,6 +74,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Default Database Server';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['username_error_regex'] = 'The Username contains invalid chracaters.';
interface/web/client/lib/lang/ro_client_template.lng
@@ -21,6 +21,7 @@
$wb['limit_web_subdomain_txt'] = 'Max. number of web subdomains';
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['limit_client_txt'] = 'Max. number of Clients';
@@ -42,6 +43,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['error_template_name_empty'] = 'Please enter a Template name';
$wb['limit_mailaliasdomain_txt'] = 'Max. number of domain aliases';
interface/web/client/lib/lang/ro_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['default_dnsserver_txt'] = 'Default DNS Server';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['limit_client_txt'] = 'Max. number of Clients';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Default Database Server';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['limit_cron_error_notint'] = 'The cron limit must be a number.';
interface/web/client/lib/lang/ru_client.lng
@@ -50,6 +50,7 @@
$wb['limit_ftp_user_txt'] = 'макс.число пользователей FTP';
$wb['default_dnsserver_txt'] = 'DNS сервер по-умолчанию';
$wb['limit_dns_zone_txt'] = 'Макс.число DNS-зон';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Макс.число записей DNS';
$wb['limit_shell_user_txt'] = 'Макс.число пользователей Shell';
$wb['username_error_empty'] = 'Логин пустой.';
@@ -72,6 +73,8 @@
$wb['limit_ftp_user_error_notint'] = 'Лимит пользователей ftp должен быть числом.';
$wb['limit_shell_user_error_notint'] = 'Лимит пользователей shell должен быть числом.';
$wb['limit_dns_zone_error_notint'] = 'Лимит DNS-записей должен быть числом.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Сервер БД по-умолчанию';
$wb['limit_database_error_notint'] = 'Лимит БД должен быть числом.';
$wb['password_strength_txt'] = 'Стойкость пароля';
interface/web/client/lib/lang/ru_client_template.lng
@@ -22,6 +22,7 @@
$wb['limit_web_subdomain_txt'] = 'Макс.число web субдоменов';
$wb['limit_ftp_user_txt'] = 'Макс.число FTP пользователей';
$wb['limit_dns_zone_txt'] = 'Макс.число DNS зон';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Макс.число DNS записей';
$wb['limit_shell_user_txt'] = 'Макс.число Shell-пользователей';
$wb['limit_maildomain_error_notint'] = 'Лимит почтовых сервером должен быть числом.';
@@ -42,6 +43,8 @@
$wb['limit_ftp_user_error_notint'] = 'Лимит пользователей ftp должен быть числом.';
$wb['limit_shell_user_error_notint'] = 'Лимит пользователей shell должен быть числом.';
$wb['limit_dns_zone_error_notint'] = 'Лимит DNS записей должен быть числом.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'Лимит БД должен быть числом.';
$wb['error_template_name_empty'] = 'Введите имя шаблона';
$wb['limit_cron_txt'] = 'Макс.число задач cron';
interface/web/client/lib/lang/ru_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Макс. число FTP пользователей';
$wb['default_dnsserver_txt'] = 'DNS сервер по-умолчанию';
$wb['limit_dns_zone_txt'] = 'Макс. число DNS зон';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Макс. число DNS записей';
$wb['limit_shell_user_txt'] = 'Макс. число of Shell-пользователей';
$wb['limit_client_txt'] = 'Макс. число клиентов';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'Лимит пользователей FTP должен быть числом.';
$wb['limit_shell_user_error_notint'] = 'Лимит пользователей Shell должен быть числом.';
$wb['limit_dns_zone_error_notint'] = 'Лимит записей DNS должен быть числом.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Сервер БД по-умолчанию';
$wb['limit_database_error_notint'] = 'Лимит БД должен быть числом.';
$wb['limit_cron_error_notint'] = 'Лимит задач cron должен быть числом.';
interface/web/client/lib/lang/se_client.lng
@@ -51,6 +51,7 @@
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['default_dnsserver_txt'] = 'Default DNS Server';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['username_error_empty'] = 'Username is empty.';
@@ -73,6 +74,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Default Database Server';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['username_error_regex'] = 'The Username contains invalid chracaters.';
interface/web/client/lib/lang/se_client_template.lng
@@ -22,6 +22,7 @@
$wb['limit_web_subdomain_txt'] = 'Max. number of web subdomains';
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['limit_maildomain_error_notint'] = 'The email domain limit must be a number.';
@@ -42,6 +43,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['error_template_name_empty'] = 'Please enter a Template name';
$wb['limit_cron_txt'] = 'Max. number of cron jobs';
interface/web/client/lib/lang/se_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. number of FTP users';
$wb['default_dnsserver_txt'] = 'Default DNS Server';
$wb['limit_dns_zone_txt'] = 'Max. number of DNS zones';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. number DNS records';
$wb['limit_shell_user_txt'] = 'Max. number of Shell users';
$wb['limit_client_txt'] = 'Max. number of Clients';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'The ftp user limit must be a number.';
$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
$wb['limit_dns_zone_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Default Database Server';
$wb['limit_database_error_notint'] = 'The database limit must be a number.';
$wb['limit_cron_error_notint'] = 'The cron limit must be a number.';
interface/web/client/lib/lang/sk_client.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. po?et používate?ov FTP';
$wb['default_dnsserver_txt'] = 'Predvolený DNS Server';
$wb['limit_dns_zone_txt'] = 'Max. po?et zón DNS';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. po?et DNS záznamov';
$wb['limit_shell_user_txt'] = 'Max. po?et Shell uživate?ov';
$wb['limit_client_txt'] = 'Max. po?et klientov';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'Limit  ftp uživate?ov musí by? ?íslo.';
$wb['limit_shell_user_error_notint'] = 'Limit  shell uživate?ov musí by? ?íslo.';
$wb['limit_dns_zone_error_notint'] = 'Limit dns záznamov musí by? ?íslo.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Predvolený Databazový Server';
$wb['limit_database_error_notint'] = 'Limit databáz musí by? ?íslo.';
$wb['limit_cron_error_notint'] = 'Limit cron musí by? ?íslo.';
interface/web/client/lib/lang/sk_client_template.lng
@@ -24,6 +24,7 @@
$wb['limit_web_subdomain_txt'] = 'Max. po?et web subdomén';
$wb['limit_ftp_user_txt'] = 'Max. po?et FTP uživate?ov';
$wb['limit_dns_zone_txt'] = 'Max. po?et DNS zón';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. po?et DNS záznamov';
$wb['limit_shell_user_txt'] = 'Max. po?et  Shell uživate?ov';
$wb['limit_client_txt'] = 'Max. po?et Klientov';
@@ -45,6 +46,8 @@
$wb['limit_ftp_user_error_notint'] = 'Limit ftp uživatelov musí by? ?íslo.';
$wb['limit_shell_user_error_notint'] = 'Limit shell uživa?e?ov musí by? ?íslo.';
$wb['limit_dns_zone_error_notint'] = 'Limit dns záznamov musí by? ?íslo.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'Limit databáz musí by? ?íslo.';
$wb['limit_cron_error_notint'] = 'Limit cron musí by? ?íslo.';
$wb['limit_cron_error_frequency'] = 'Cron frekvencia limit musí by? ?íslo.';
interface/web/client/lib/lang/sk_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. po?et  FTP uživate?ov';
$wb['default_dnsserver_txt'] = 'Predvolený DNS Server';
$wb['limit_dns_zone_txt'] = 'Max. po?et  DNS zón';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. po?et  DNS záznamov';
$wb['limit_shell_user_txt'] = 'Max. po?et  of Shell users';
$wb['limit_client_txt'] = 'Max. po?et  Klientov';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'Limit ftp uživate? musí by? ?íslo.';
$wb['limit_shell_user_error_notint'] = 'Limit shell uživate? musí by? ?íslo.';
$wb['limit_dns_zone_error_notint'] = 'Limit dns záznamov musí by? ?íslo.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Predvolený databázový server';
$wb['limit_database_error_notint'] = 'Databázový limit musí by? ?íslo.';
$wb['limit_cron_error_notint'] = 'Cron limit musí by? ?íslo.';
interface/web/client/lib/lang/tr_client.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. FTP kullanıcı sayısı';
$wb['default_dnsserver_txt'] = 'Varsayılan DNS Sunucusu';
$wb['limit_dns_zone_txt'] = 'Max. DNS zone sayısı';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. DNS kaydı sayısı';
$wb['limit_shell_user_txt'] = 'Max. Shell kullanıcısı sayısı';
$wb['limit_client_txt'] = 'Max. Müşteri sayısı';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'Ftp kullanıcısı limiti sayı olmak zorunda.';
$wb['limit_shell_user_error_notint'] = 'Shell kullanıcısı limiti sayı olmak zorunda.';
$wb['limit_dns_zone_error_notint'] = 'Dns record limiti sayı olmak zorunda.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Varsayılan Veritabanı Sunucusu';
$wb['limit_database_error_notint'] = 'Veritabanı limiti sayı olmak zorunda.';
$wb['limit_cron_error_notint'] = 'Zamanlanmış Görev limiti sayı olmak zorunda.';
interface/web/client/lib/lang/tr_client_template.lng
@@ -24,6 +24,7 @@
$wb['limit_web_subdomain_txt'] = 'Max. sub domain sayısı';
$wb['limit_ftp_user_txt'] = 'Max. FTP kullanıcı sayısı';
$wb['limit_dns_zone_txt'] = 'Max. DNS zone sayısı';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. DNS kaydı sayısı';
$wb['limit_shell_user_txt'] = 'Max. Shell kullanıcısı sayısı';
$wb['limit_client_txt'] = 'Max. Müşteri sayısı';
@@ -45,6 +46,8 @@
$wb['limit_ftp_user_error_notint'] = 'Ftp kullanıcı limiti sayı olmak zorunda.';
$wb['limit_shell_user_error_notint'] = 'Shell kullanıcı limiti sayı olmak zorunda.';
$wb['limit_dns_zone_error_notint'] = 'Dns kaydı limiti sayı olmak zorunda.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['limit_database_error_notint'] = 'The database limiti sayı olmak zorunda.';
$wb['limit_cron_error_notint'] = 'Zamanlanmış Görev limiti sayı olmak zorunda.';
$wb['limit_cron_error_frequency'] = 'Zamanlanmış Görev sıklığı limiti sayı olmak zorunda.';
interface/web/client/lib/lang/tr_reseller.lng
@@ -53,6 +53,7 @@
$wb['limit_ftp_user_txt'] = 'Max. FTP kullanıcı sayısı';
$wb['default_dnsserver_txt'] = 'Varsayılan DNS Sunucusu';
$wb['limit_dns_zone_txt'] = 'Max. DNS zone sayısı';
$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
$wb['limit_dns_record_txt'] = 'Max. DNS record sayısı';
$wb['limit_shell_user_txt'] = 'Max. Shell kullanıcı sayısı';
$wb['limit_client_txt'] = 'Max. Müşteri sayısı';
@@ -76,6 +77,8 @@
$wb['limit_ftp_user_error_notint'] = 'FTP kullanıcı limiti sayı olmak zorunda.';
$wb['limit_shell_user_error_notint'] = 'Shell kullanıcı limiti sayı olmak zorunda.';
$wb['limit_dns_zone_error_notint'] = 'Dns record limiti sayı olmak zorunda.';
$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
$wb['default_dbserver_txt'] = 'Varsayılan Veritabanı Sunucusu';
$wb['limit_database_error_notint'] = 'Veritabanı limiti sayı olmak zorunda.';
$wb['limit_cron_error_notint'] = 'Zamanlanmış Görev limiti sayı olmak zorunda.';
interface/web/client/templates/client_edit_limits.htm
@@ -150,6 +150,10 @@
                <input name="limit_dns_zone" id="limit_dns_zone" value="{tmpl_var name='limit_dns_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
            </div>
            <div class="ctrlHolder">
                <label for="limit_dns_slave_zone">{tmpl_var name='limit_dns_slave_zone_txt'}</label>
                <input name="limit_dns_slave_zone" id="limit_dns_slave_zone" value="{tmpl_var name='limit_dns_slave_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
            </div>
            <div class="ctrlHolder">
                <label for="limit_dns_record">{tmpl_var name='limit_dns_record_txt'}</label>
                <input name="limit_dns_record" id="limit_dns_record" value="{tmpl_var name='limit_dns_record'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
            </div>
interface/web/client/templates/client_template_edit_limits.htm
@@ -90,6 +90,10 @@
                <input name="limit_dns_zone" id="limit_dns_zone" value="{tmpl_var name='limit_dns_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
            </div>
            <div class="ctrlHolder">
                <label for="limit_dns_slave_zone">{tmpl_var name='limit_dns_slave_zone_txt'}</label>
                <input name="limit_dns_slave_zone" id="limit_dns_slave_zone" value="{tmpl_var name='limit_dns_slave_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
            </div>
            <div class="ctrlHolder">
                <label for="limit_dns_record">{tmpl_var name='limit_dns_record_txt'}</label>
                <input name="limit_dns_record" id="limit_dns_record" value="{tmpl_var name='limit_dns_record'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
            </div>
interface/web/client/templates/reseller_edit_limits.htm
@@ -131,6 +131,10 @@
        <input name="limit_dns_zone" id="limit_dns_zone" value="{tmpl_var name='limit_dns_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
            </div>
      <div class="ctrlHolder">
          <label for="limit_dns_slave_zone">{tmpl_var name='limit_dns_slave_zone_txt'}</label>
        <input name="limit_dns_slave_zone" id="limit_dns_slave_zone" value="{tmpl_var name='limit_dns_slave_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
            </div>
      <div class="ctrlHolder">
          <label for="limit_dns_record">{tmpl_var name='limit_dns_record_txt'}</label>
        <input name="limit_dns_record" id="limit_dns_record" value="{tmpl_var name='limit_dns_record'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
            </div>
interface/web/dashboard/dashlets/limits.php
@@ -81,6 +81,10 @@
                          'db_table' => 'dns_soa',
                          'db_where' => "");
        $limits[] = array('field' => 'limit_dns_slave_zone',
                          'db_table' => 'dns_slave',
                          'db_where' => "");
        $limits[] = array('field' => 'limit_dns_record',
                          'db_table' => 'dns_rr',
                          'db_where' => "");
@@ -166,4 +170,4 @@
?>
?>
interface/web/dashboard/lib/lang/de_dashlet_limits.lng
@@ -20,6 +20,7 @@
$wb['limit_web_subdomain_txt'] = "Anzahl der Web Subdomains";
$wb['limit_ftp_user_txt'] = "Anzahl der FTP Benutzer";
$wb['limit_dns_zone_txt'] = "Anzahl der DNS Zonen";
$wb["limit_dns_slave_zone_txt"] = 'Number of DNS slave zones';
$wb['limit_dns_record_txt'] = "Number DNS records";
$wb['limit_shell_user_txt'] = "Anzahl der Shellbenutzer";
$wb['limit_webdav_user_txt'] = "Anzahl der WedDAV Benutzer";
interface/web/dashboard/lib/lang/en_dashlet_limits.lng
@@ -20,6 +20,7 @@
$wb["limit_web_subdomain_txt"] = 'Number of web subdomains';
$wb["limit_ftp_user_txt"] = 'Number of FTP users';
$wb["limit_dns_zone_txt"] = 'Number of DNS zones';
$wb["limit_dns_slave_zone_txt"] = 'Number of DNS slave zones';
$wb["limit_dns_record_txt"] = 'Number DNS records';
$wb["limit_shell_user_txt"] = 'Number of Shell users';
$wb["limit_webdav_user_txt"] = 'Number of Webdav users';
interface/web/dns/dns_slave_del.php
New file
@@ -0,0 +1,69 @@
<?php
/*
Copyright (c) 2008, Till Brehm, projektfarm Gmbh
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
    * Neither the name of ISPConfig nor the names of its contributors
      may be used to endorse or promote products derived from this software without
      specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/******************************************
* Begin Form configuration
******************************************/
$list_def_file = "list/dns_slave.list.php";
$tform_def_file = "form/dns_slave.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');
$app->uses('tpl,tform,tform_actions');
$app->load('tform_actions');
class page_action extends tform_actions {
    function onBeforeDelete() {
        global $app; $conf;
        if($app->tform->checkPerm($this->id,'d') == false) $app->error($app->lng('error_no_delete_permission'));
        // Delete all records that belog to this zone.
        $records = $app->db->queryAllRecords("SELECT id FROM dns_slave WHERE zone = '".intval($this->id)."'");
        foreach($records as $rec) {
            $app->db->datalogDelete('dns_slave','id',$rec['id']);
        }
    }
}
$page = new page_action;
$page->onDelete();
?>
interface/web/dns/dns_slave_edit.php
New file
@@ -0,0 +1,199 @@
<?php
/*
Copyright (c) 2007, Till Brehm, projektfarm Gmbh
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
    * Neither the name of ISPConfig nor the names of its contributors
      may be used to endorse or promote products derived from this software without
      specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/******************************************
* Begin Form configuration
******************************************/
$tform_def_file = "form/dns_slave.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') {
            if(!$app->tform->checkClientLimit('limit_dns_slave_zone')) {
                $app->error($app->tform->wordbook["limit_dns_slave_zone_txt"]);
            }
            if(!$app->tform->checkResellerLimit('limit_dns_slave_zone')) {
                $app->error('Reseller: '.$app->tform->wordbook["limit_dns_slave_zone_txt"]);
            }
        }
        parent::onShowNew();
    }
    function onShowEnd() {
        global $app, $conf;
        // If user is admin, we will allow him to select to whom this record belongs
        if($_SESSION["s"]["user"]["typ"] == 'admin') {
            // Getting Domains of the user
            $sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0 ORDER by name";
            $clients = $app->db->queryAllRecords($sql);
            $client_select = '';
            if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>";
            $tmp_data_record = $app->tform->getDataRecord($this->id);
            if(is_array($clients)) {
                foreach( $clients as $client) {
                    $selected = ($client["groupid"] == @$tmp_data_record["sys_groupid"])?'SELECTED':'';
                    $client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
                }
            }
        $app->tpl->setVar("client_group_id",$client_select);
        } else if($app->auth->has_clients($_SESSION['s']['user']['userid'])) {
            // Get the limits of the client
            $client_group_id = $_SESSION["s"]["user"]["default_group"];
            $client = $app->db->queryOneRecord("SELECT client.client_id, client.contact_name FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
            // Fill the client select field
            $sql = "SELECT groupid, name FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$client['client_id']." ORDER BY name";
            $clients = $app->db->queryAllRecords($sql);
            $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$client['client_id']);
            $client_select = '<option value="'.$tmp['groupid'].'">'.$client['contact_name'].'</option>';
            $tmp_data_record = $app->tform->getDataRecord($this->id);
            if(is_array($clients)) {
                foreach( $clients as $client) {
                    $selected = @($client["groupid"] == $tmp_data_record["sys_groupid"])?'SELECTED':'';
                    $client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
                }
            }
            $app->tpl->setVar("client_group_id",$client_select);
        }
        parent::onShowEnd();
    }
    function onSubmit() {
        global $app, $conf;
        if($_SESSION["s"]["user"]["typ"] != 'admin') {
            // Get the limits of the client
            $client_group_id = $_SESSION["s"]["user"]["default_group"];
            $client = $app->db->queryOneRecord("SELECT limit_dns_slave_zone, default_dnsserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
            // When the record is updated
            if($this->id > 0) {
                // restore the server ID if the user is not admin and record is edited
                $tmp = $app->db->queryOneRecord("SELECT server_id FROM dns_slave WHERE id = ".intval($this->id));
                $this->dataRecord["server_id"] = $tmp["server_id"];
                unset($tmp);
            // When the record is inserted
            } else {
                // set the server ID to the default dnsserver of the client
                $this->dataRecord["server_id"] = $client["default_dnsserver"];
                // Check if the user may add anoter secondary domain.
                if($client["limit_slave_dns_zone"] >= 0) {
                    $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_slave WHERE sys_groupid = $client_group_id");
                    if($tmp["number"] >= $client["limit_dns_slave_zone"]) {
                        $app->error($app->tform->wordbook["limit_dns_slave_zone_txt"]);
                    }
                }
            }
        }
        //* Check if the zone name has a dot at the end
        if(strlen($this->dataRecord["origin"]) > 0 && substr($this->dataRecord["origin"],-1,1) != '.') $this->dataRecord["origin"] .= '.';
        //* Check if a primary zone with the same name already exists
        $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_soa WHERE origin = \"".$this->dataRecord["origin"]."\" AND server_id= \"".$this->dataRecord["server_id"]."\"");
        if($tmp["number"] > 0) {
              $app->error($app->tform->wordbook["origin_error_unique"]);
        }
        parent::onSubmit();
    }
    function onAfterInsert() {
        global $app, $conf;
        // make sure that the record belongs to the client group and not the admin group when a dmin inserts it
        if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
            $client_group_id = intval($this->dataRecord["client_group_id"]);
            $app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$this->id);
        }
        if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
            $client_group_id = intval($this->dataRecord["client_group_id"]);
            $app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$this->id);
        }
    }
    function onAfterUpdate() {
        global $app, $conf;
        $tmp = $app->db->diffrec($this->oldDataRecord,$app->tform->getDataRecord($this->id));
        // make sure that the record belongs to the client group and not the admin group when a dmin inserts it
        if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
            $client_group_id = intval($this->dataRecord["client_group_id"]);
            $app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$this->id);
        }
        if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
            $client_group_id = intval($this->dataRecord["client_group_id"]);
            $app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$this->id);
        }
        //** When the client group has changed, change also the owner of the record if the owner is not the admin user
        if($this->oldDataRecord["client_group_id"] != $this->dataRecord["client_group_id"] && $this->dataRecord["sys_userid"] != 1) {
            $client_group_id = intval($this->dataRecord["client_group_id"]);
            $tmp = $app->db->queryOneREcord("SELECT userid FROM sys_user WHERE default_group = ".$client_group_id);
            if($tmp["userid"] > 0) {
                $app->db->query("UPDATE dns_slave SET sys_userid = ".$tmp["userid"]." WHERE id = ".$this->id);
            }
        }
    }
}
$page = new page_action;
$page->onLoad();
?>
interface/web/dns/dns_slave_list.php
New file
@@ -0,0 +1,25 @@
<?php
require_once('../../lib/config.inc.php');
require_once('../../lib/app.inc.php');
/******************************************
* Begin Form configuration
******************************************/
$list_def_file = "list/dns_slave.list.php";
/******************************************
* End Form configuration
******************************************/
//* Check permissions for module
$app->auth->check_module_permissions('dns');
$app->uses('listform_actions');
// $app->listform_actions->SQLExtWhere = "access = 'REJECT'";
$app->listform_actions->SQLOrderBy = 'ORDER BY origin';
$app->listform_actions->onLoad();
?>
interface/web/dns/dns_soa_edit.php
@@ -154,7 +154,12 @@
        if(stristr($this->dataRecord["mbox"],'@')) {
            $this->dataRecord["mbox"] = str_replace('@','.',$this->dataRecord["mbox"]);
        }
        //* Check if a secondary zone with the same name already exists
        $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_slave WHERE origin = \"".$this->dataRecord["origin"]."\" AND server_id = \"".$this->dataRecord["server_id"]."\"");
        if($tmp["number"] > 0) {
              $app->error($app->tform->wordbook["origin_error_unique"]);
        }
        parent::onSubmit();
    }
@@ -219,4 +224,4 @@
$page = new page_action;
$page->onLoad();
?>
?>
interface/web/dns/form/dns_slave.tform.php
New file
@@ -0,0 +1,126 @@
<?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).
*/
$form["title"]             = "Secondary DNS Zone";
$form["description"]     = "";
$form["name"]             = "dns_slave";
$form["action"]            = "dns_slave_edit.php";
$form["db_table"]        = "dns_slave";
$form["db_table_idx"]    = "id";
$form["db_history"]        = "yes";
$form["tab_default"]    = "dns_slave";
$form["list_default"]    = "dns_slave_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_slave'] = array (
    'title'     => "Secondary DNS Zone",
    'width'     => 100,
    'template'     => "templates/dns_slave_edit.htm",
    'fields'     => array (
    ##################################
    # Begin Datatable fields
    ##################################
        'server_id' => array (
            'datatype'    => 'INTEGER',
            'formtype'    => 'SELECT',
            'datasource'    => array (     'type'    => 'SQL',
                                        'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND dns_server = 1 AND {AUTHSQL} ORDER BY server_name',
                                        'keyfield'=> 'server_id',
                                        'valuefield'=> 'server_name'
                                     ),
            'validators'    => array (     0 => array (    'type'    => 'NOTEMPTY',
                                                        'errmsg'=> 'server_id_error_empty'),
                                    ),
            'default'    => '',
            'value'        => '',
            'width'        => '30',
            'maxlength'    => '255'
        ),
        'origin' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'TEXT',
            'validators'    => array (     0 => array (    'type'    => 'NOTEMPTY',
                                                        'errmsg'=> 'origin_error_empty'),
                                        1 => array (    'type'    => 'UNIQUE',
                                                        'errmsg'=> 'origin_error_unique'),
                                        2 => array (    'type'    => 'REGEX',
                                                        'regex' => '/^[\w\.\-\/]{2,255}\.[a-zA-Z]{2,10}[\.]{0,1}$/',
                                                        'errmsg'=> 'origin_error_regex'),
                                    ),
            'default'    => '',
            'value'        => '',
            'width'        => '30',
            'maxlength'    => '255'
        ),
        'ns' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'TEXT',
            'validators'    => array (     0 => array (    'type'    => 'REGEX',
                                                        'regex' => '/^[\w\.\-]{1,64}$/',
                                                        'errmsg'=> 'ns_error_regex'),
                                    ),
            'default'    => '',
            'value'        => '',
            'width'        => '30',
            'maxlength'    => '255'
        ),
                'xfer' => array (
                        'datatype'      => 'VARCHAR',
                        'formtype'      => 'TEXT',
                        'default'       => '',
                        'value'         => '',
                        'width'         => '30',
                        'maxlength'     => '255'
                ),
        'active' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'Y',
            'value'        => array(0 => 'N',1 => 'Y')
        ),
    ##################################
    # ENDE Datatable fields
    ##################################
    )
);
?>
interface/web/dns/lib/lang/ar_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/ar_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/bg_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/bg_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/br_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/br_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/cz_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/cz_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/de_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/de_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/en_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/en_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/es_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/es_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/fi_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/fi_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/fr_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/fr_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/hu_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/hu_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/it_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/it_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/ja_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/ja_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/nl_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/nl_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/pl_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/pl_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/pt_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/pt_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/ro_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/ro_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/ru_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/ru_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/se_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/se_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/sk_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/sk_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/lang/tr_dns_slave.lng
New file
@@ -0,0 +1,14 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'DNS Zone';
$wb["ns_txt"] = 'NS';
$wb["active_txt"] = 'Active';
$wb["limit_dns_slave_zone_txt"] = 'The max. number of Secondary DNS zones for your account is reached.';
$wb["client_txt"] = 'Client';
$wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)';
$wb["server_id_error_empty"] = 'No server selected';
$wb["origin_error_empty"] = 'Zone empty.';
$wb["origin_error_unique"] = 'There is already a record for this zone.';
$wb["origin_error_regex"] = 'Zone has a invalid format.';
$wb["ns_error_regex"] = 'NS has a invalid format.';
?>
interface/web/dns/lib/lang/tr_dns_slave_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'DNS Secondary Zones';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["origin_txt"] = 'Zone';
$wb["ns_txt"] = 'NS';
$wb["add_new_record_txt"] = 'Add new secondary DNS Zone';
?>
interface/web/dns/lib/module.conf.php
@@ -50,8 +50,16 @@
unset($items);
$items[] = array( 'title'     => "Secondary Zones",
                  'target'     => 'content',
                  'link'    => 'dns/dns_slave_list.php',
                  'html_id' => 'dns_slave_list');
$module["nav"][] = array(    'title'    => 'Secondary DNS',
                            'open'     => 1,
                            'items'    => $items);
unset($items);
interface/web/dns/list/dns_slave.list.php
New file
@@ -0,0 +1,97 @@
<?php
/*
    Datatypes:
    - INTEGER
    - DOUBLE
    - CURRENCY
    - VARCHAR
    - TEXT
    - DATE
*/
// Name of the list
$liste["name"]                 = "dns_slave";
// Database table
$liste["table"]             = "dns_slave";
// Index index field of the database table
$liste["table_idx"]            = "id";
// Search Field Prefix
$liste["search_prefix"]     = "search_";
// Records per page
$liste["records_per_page"]     = 15;
// Script File of the list
$liste["file"]                = "dns_slave_list.php";
// Script file of the edit form
$liste["edit_file"]            = "dns_slave_edit.php";
// Script File of the delete script
$liste["delete_file"]        = "dns_slave_del.php";
// Paging Template
$liste["paging_tpl"]        = "templates/paging.tpl.htm";
// Enable auth
$liste["auth"]                = "yes";
/*****************************************************
* Suchfelder
*****************************************************/
$liste["item"][] = array(    'field'        => "active",
                            'datatype'    => "VARCHAR",
                            'formtype'    => "SELECT",
                            'op'        => "=",
                            'prefix'    => "",
                            'suffix'    => "",
                            'width'        => "",
                            'value'        => array('y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>",'n' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
$liste["item"][] = array(    'field'        => "server_id",
                            'datatype'    => "VARCHAR",
                            'formtype'    => "SELECT",
                            'op'        => "like",
                            'prefix'    => "%",
                            'suffix'    => "%",
                            'datasource'    => array (     'type'    => 'CUSTOM',
                                                        'class'=> 'custom_datasource',
                                                        'function'=> 'dns_servers'
                                                       ),
                            'width'        => "",
                            'value'        => "");
$liste["item"][] = array(    'field'        => "origin",
                            'datatype'    => "VARCHAR",
                            'formtype'    => "TEXT",
                            'op'        => "like",
                            'prefix'    => "%",
                            'suffix'    => "%",
                            'width'        => "",
                            'value'        => "");
$liste["item"][] = array(    'field'        => "ns",
                            'datatype'    => "VARCHAR",
                            'formtype'    => "TEXT",
                            'op'        => "like",
                            'prefix'    => "%",
                            'suffix'    => "%",
                            'width'        => "",
                            'value'        => "");
?>
interface/web/dns/templates/dns_slave_edit.htm
New file
@@ -0,0 +1,61 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_dns_slave">
  <div class="pnl_formsarea">
    <fieldset class="inlineLabels"><legend>Secondary DNS Zone</legend>
      <tmpl_if name="is_admin">
      <div class="ctrlHolder">
          <label for="server_id">{tmpl_var name='server_id_txt'}</label>
        <select name="server_id" id="server_id" class="selectInput">
                    {tmpl_var name='server_id'}
                </select>
      </div>
      <div class="ctrlHolder">
          <label for="client_group_id">{tmpl_var name='client_txt'}</label>
        <select name="client_group_id" id="client_group_id" class="selectInput">
                    {tmpl_var name='client_group_id'}
                </select>
      </div>
      </tmpl_if>
      <tmpl_if name="is_reseller">
      <div class="ctrlHolder">
          <label for="client_group_id">{tmpl_var name='client_txt'}</label>
        <select name="client_group_id" id="client_group_id" class="selectInput">
                    {tmpl_var name='client_group_id'}
                </select>
      </div>
      </tmpl_if>
      <div class="ctrlHolder">
          <label for="origin">{tmpl_var name='origin_txt'}</label>
        <input name="origin" id="origin" value="{tmpl_var name='origin'}" size="30" maxlength="255" type="text" class="textInput" />
                <p class="formHint">e.g. domain.tld.</p>
            </div>
      <div class="ctrlHolder">
          <label for="ns">{tmpl_var name='ns_txt'}</label>
        <input name="ns" id="ns" value="{tmpl_var name='ns'}" size="30" maxlength="255" type="text" class="textInput" />
                <p class="formHint">IPv4 form - e.g. 1.2.3.4</p>
            </div>
      <div class="ctrlHolder">
        <label for="xfer">{tmpl_var name='xfer_txt'}</label>
        <input name="xfer" id="xfer" value="{tmpl_var name='xfer'}" size="30" maxlength="255" type="text" class="textInput" />
      </div>
      <div class="ctrlHolder">
                <p class="label">{tmpl_var name='active_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='active'}
                    </div>
            </div>
    </fieldset>
    <input type="hidden" name="id" value="{tmpl_var name='id'}">
    <input name="serial" type="hidden" value="{tmpl_var name='serial'}">
    <div class="buttonHolder buttons">
      <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','dns/dns_slave_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_slave_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
    </div>
  </div>
</div>
interface/web/dns/templates/dns_slave_list.htm
New file
@@ -0,0 +1,59 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_list_dns_slave">
  <div class="pnl_toolsarea">
    <fieldset><legend>{tmpl_var name="toolsarea_head_txt"}</legend>
      <div class="buttons">
        <button class="iconstxt icoAdd" type="button" onClick="loadContent('dns/dns_slave_edit.php');">
          <span>{tmpl_var name="add_new_record_txt"}</span>
        </button>
      </div>
    </fieldset>
  </div>
  <div class="pnl_listarea">
    <fieldset><legend><tmpl_var name="list_head_txt"></legend>
      <table class="list">
        <thead>
          <tr>
            <th class="tbl_col_active" scope="col"><tmpl_var name="active_txt"></th>
            <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
            <th class="tbl_col_origin" scope="col"><tmpl_var name="origin_txt"></th>
            <th class="tbl_col_ns" scope="col"><tmpl_var name="ns_txt"></th>
            <th class="tbl_col_buttons" scope="col">&nbsp;</th>
          </tr>
          <tr>
            <td class="tbl_col_active"><select name="search_active" onChange="submitForm('pageForm','dns/dns_slave_list.php');">{tmpl_var name='search_active'}</select></td>
            <td class="tbl_col_server_id"><select name="search_server_id" onChange="submitForm('pageForm','dns/dns_slave_list.php');">{tmpl_var name='search_server_id'}</select></td>
            <td class="tbl_col_origin"><input type="text" name="search_origin" value="{tmpl_var name='search_origin'}" /></td>
            <td class="tbl_col_ns"><input type="text" name="search_ns" value="{tmpl_var name='search_ns'}" /></td>
            <td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','dns/dns_slave_list.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td>
          </tr>
        </thead>
        <tbody>
          <tmpl_loop name="records">
          <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
            <td class="tbl_col_active"><a href="#" onClick="loadContent('dns/dns_slave_edit.php?id={tmpl_var name='id'}');"><img src="themes/{tmpl_var name='theme'}/icons/{tmpl_var name='_active_'}" border="0" /></a></td>
            <td class="tbl_col_server_id"><a href="#" onClick="loadContent('dns/dns_slave_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
            <td class="tbl_col_origin"><a href="#" onClick="loadContent('dns/dns_slave_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="origin"}</a></td>
            <td class="tbl_col_ns"><a href="#" onClick="loadContent('dns/dns_slave_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="ns"}</a></td>
            <td class="tbl_col_buttons">
              <div class="buttons icons16">
                <a class="icons16 icoDelete" href="javascript: del_record('dns/dns_slave_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
              </div>
            </td>
          </tr>
          </tmpl_loop>
        </tbody>
        <tfoot>
          <tr>
            <td class="tbl_footer tbl_paging" colspan="6"><tmpl_var name="paging"></td>
          </tr>
        </tfoot>
      </table>
    </fieldset>
  </div>
</div>
server/conf/bind_named.conf.local.slave
New file
@@ -0,0 +1,9 @@
<tmpl_loop name='zones'>
<tmpl_if name='zone'>
zone "<tmpl_var name='zone'>" {
        type slave;
<tmpl_var name='options'>        file "<tmpl_var name='zonefile_path'>";
};
</tmpl_if>
</tmpl_loop>
server/mods-available/dns_module.inc.php
@@ -35,6 +35,9 @@
    var $actions_available = array(    'dns_soa_insert',
                                    'dns_soa_update',
                                    'dns_soa_delete',
                                    'dns_slave_insert',
                                    'dns_slave_update',
                                    'dns_slave_delete',
                                    'dns_rr_insert',
                                    'dns_rr_update',
                                    'dns_rr_delete');
@@ -73,11 +76,13 @@
        */
        
        $app->modules->registerTableHook('dns_soa',$this->module_name,'process');
        $app->modules->registerTableHook('dns_slave',$this->module_name,'process');
        $app->modules->registerTableHook('dns_rr',$this->module_name,'process');
        
        
        // Register service
        $app->services->registerService('bind','dns_module','restartBind');
        $app->services->registerService('powerdns','dns_module','restartPowerDNS');
        
    }
    
@@ -94,6 +99,11 @@
                if($action == 'i') $app->plugins->raiseEvent('dns_soa_insert',$data);
                if($action == 'u') $app->plugins->raiseEvent('dns_soa_update',$data);
                if($action == 'd') $app->plugins->raiseEvent('dns_soa_delete',$data);
            break;
            case 'dns_slave':
                if($action == 'i') $app->plugins->raiseEvent('dns_slave_insert',$data);
                if($action == 'u') $app->plugins->raiseEvent('dns_slave_update',$data);
                if($action == 'd') $app->plugins->raiseEvent('dns_slave_delete',$data);
            break;
            case 'dns_rr':
                if($action == 'i') $app->plugins->raiseEvent('dns_rr_insert',$data);
@@ -121,8 +131,54 @@
        }
        
    }
    function restartPowerDNS($action = 'restart') {
        global $app;
        $app->log("restartPDNS called.",LOGLEVEL_DEBUG);
/**     Since PowerDNS does not currently allow to limit AXFR for specific zones to specific
*        IP addresses, we create a list of IPs allowed of AXFR transfers from our PowerDNS,
*        however any of these IPs is allowed to AXFR transfer any of the zones we are masters
*        for.
*/
        $tmps = $app->db->queryAllRecords("SELECT DISTINCT xfer FROM dns_soa WHERE active = 'Y' UNION SELECT DISTINCT xfer FROM dns_slave WHERE active = 'Y' ");
        //* Make sure the list is never empty
        $options='127.0.0.1';
        foreach($tmps as $tmp) {
            if (trim($tmp['xfer'])!='') {
                if ($options=='') {
                    $options.=$tmp['xfer'];
                } else {
                    $options=$options.",".$tmp['xfer'];
                }
            }
        }
        //* Remove duplicate IPs from the array
        $options = "allow-axfr-ips=".implode(",",array_unique(explode(",",$options)));
        $app->log("".$options,LOGLEVEL_DEBUG);
/**        Not an ideal way to use a hardcoded path like that, but currently
*        we have no way to find out where powerdns' configuration files are
*        located, so we have to work on assumption.
*/
        file_put_contents('/etc/powerdns/pdns.d/pdns.ispconfig-axfr',$options."\n");
        if (is_file('/etc/init.d/powerdns')) {
            $command = '/etc/init.d/powerdns';
        } else {
            $command = '/etc/init.d/pdns';
        }
        exec($command.' restart');
//     unset $tmps;
    }
    
} // end class
?>
?>
server/plugins-available/bind_plugin.inc.php
@@ -63,6 +63,11 @@
        $app->plugins->registerEvent('dns_soa_insert',$this->plugin_name,'soa_insert');
        $app->plugins->registerEvent('dns_soa_update',$this->plugin_name,'soa_update');
        $app->plugins->registerEvent('dns_soa_delete',$this->plugin_name,'soa_delete');
    //* SLAVE
        $app->plugins->registerEvent('dns_slave_insert',$this->plugin_name,'slave_insert');
        $app->plugins->registerEvent('dns_slave_update',$this->plugin_name,'slave_update');
        $app->plugins->registerEvent('dns_slave_delete',$this->plugin_name,'slave_delete');
        
        //* RR
        $app->plugins->registerEvent('dns_rr_insert',$this->plugin_name,'rr_insert');
@@ -146,6 +151,61 @@
        $app->services->restartServiceDelayed('bind','reload');
            
    }
    function slave_insert($event_name,$data) {
        global $app, $conf;
        $this->action = 'insert';
        $this->slave_update($event_name,$data);
    }
    function slave_update($event_name,$data) {
        global $app, $conf;
        //* Load libraries
        $app->uses("getconf,tpl");
        //* load the server configuration options
        $dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns');
        //* rebuild the named.conf file if the origin has changed or when the origin is inserted.
        //if($this->action == 'insert' || $data['old']['origin'] != $data['new']['origin']) {
        $this->write_named_conf($data,$dns_config);
        //}
        //* Delete old domain file, if domain name has been changed
        if($data['old']['origin'] != $data['new']['origin']) {
            $filename = $dns_config['bind_zonefiles_dir'].'/slave/sec.'.substr($data['old']['origin'],0,-1);
            if(is_file($filename)) unset($filename);
        }
        //* Reload bind nameserver
        $app->services->restartServiceDelayed('bind','reload');
    }
    function slave_delete($event_name,$data) {
        global $app, $conf;
        //* load the server configuration options
        $app->uses("getconf,tpl");
        $dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns');
        //* rebuild the named.conf file
        $this->write_named_conf($data,$dns_config);
        //* Delete the domain file
        $zone_file_name = $dns_config['bind_zonefiles_dir'].'/slave/sec.'.substr($data['old']['origin'],0,-1);
        if(is_file($zone_file_name)) unlink($zone_file_name);
        $app->log("Deleting BIND domain file for secondary zone: ".$zone_file_name,LOGLEVEL_DEBUG);
        //* Reload bind nameserver
        $app->services->restartServiceDelayed('bind','reload');
    }
    
    function rr_insert($event_name,$data) {
        global $app, $conf;
@@ -187,14 +247,19 @@
    
    function write_named_conf($data, $dns_config) {
        global $app, $conf;
        $tmps = $app->db->queryAllRecords("SELECT origin, xfer, also_notify FROM dns_soa WHERE active = 'Y'");
        //* Only write the master file for the current server
        $tmps = $app->db->queryAllRecords("SELECT origin, xfer, also_notify FROM dns_soa WHERE active = 'Y' AND server_id=".$conf["server_id"]);
        $zones = array();
        foreach($tmps as $tmp) {
            
            $options = '';
            if(trim($tmp['xfer']) != '') $options .= '        allow-transfer {'.str_replace(',',';',$tmp['xfer']).";};\n";
            if(trim($tmp['xfer']) != '') {
                $options .= "        allow-transfer {".str_replace(',',';',$tmp['xfer']).";};\n";
            } else {
                $options .= "        allow-transfer {none;};\n";
            }
            if(trim($tmp['also_notify']) != '') $options .= '        also-notify {'.str_replace(',',';',$tmp['also_notify']).";};\n";
            
            $zones[] = array(    'zone' => substr($tmp['origin'],0,-1),
@@ -202,14 +267,46 @@
                                'options' => $options
                            );
        }
        $tpl = new tpl();
        $tpl->newTemplate("bind_named.conf.local.master");
        $tpl->setLoop('zones',$zones);
        
        file_put_contents($dns_config['named_conf_local_path'],$tpl->grab());
        $app->log("Writing BIND named.conf.local file: ".$dns_config['named_conf_local_path'],LOGLEVEL_DEBUG);
        //* And loop through the secondary zones, but only for the current server
        $tmps_sec = $app->db->queryAllRecords("SELECT origin, xfer, ns FROM dns_slave WHERE active = 'Y' AND server_id=".$conf["server_id"]);
        $zones_sec = array();
        foreach($tmps_sec as $tmp) {
            $options = "        masters {".$tmp['ns'].";};\n";
            if(trim($tmp['xfer']) != '') {
                $options .= "        allow-transfer {".str_replace(',',';',$tmp['xfer']).";};\n";
            } else {
                $options .= "        allow-transfer {none;};\n";
            }
            $zones_sec[] = array(    'zone' => substr($tmp['origin'],0,-1),
                                    'zonefile_path' => $dns_config['bind_zonefiles_dir'].'/slave/sec.'.substr($tmp['origin'],0,-1),
                                    'options' => $options
                                );
//            $filename = escapeshellcmd($dns_config['bind_zonefiles_dir'].'/slave/sec.'.substr($tmp['origin'],0,-1));
//            $app->log("Writing BIND domain file: ".$filename,LOGLEVEL_DEBUG);
        }
        
        $tpl_sec = new tpl();
        $tpl_sec->newTemplate("bind_named.conf.local.slave");
        $tpl_sec->setLoop('zones',$zones_sec);
        file_put_contents($dns_config['named_conf_local_path'],$tpl->grab()."\n".$tpl_sec->grab());
        $app->log("Writing BIND named.conf.local file: ".$dns_config['named_conf_local_path'],LOGLEVEL_DEBUG);
         unset($tpl_sec);
        unset($zones_sec);
        unset($tmps_sec);
        unset($tpl);
        unset($zones);
        unset($tmps);
@@ -221,4 +318,4 @@
} // end class
?>
?>
server/plugins-available/powerdns_plugin.inc.php
@@ -111,6 +111,11 @@
        $app->plugins->registerEvent('dns_soa_insert',$this->plugin_name,'soa_insert');
        $app->plugins->registerEvent('dns_soa_update',$this->plugin_name,'soa_update');
        $app->plugins->registerEvent('dns_soa_delete',$this->plugin_name,'soa_delete');
        //* SLAVE
        $app->plugins->registerEvent('dns_slave_insert',$this->plugin_name,'slave_insert');
        $app->plugins->registerEvent('dns_slave_update',$this->plugin_name,'slave_update');
        $app->plugins->registerEvent('dns_slave_delete',$this->plugin_name,'slave_delete');
        
        //* RR
        $app->plugins->registerEvent('dns_rr_insert',$this->plugin_name,'rr_insert');
@@ -130,7 +135,6 @@
        $serial = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ".$ispconfig_id);
        $serial_id = $serial["serial"];
        $app->db->query("INSERT INTO powerdns.domains (name, type, notified_serial, ispconfig_id) VALUES ('$origin', 'MASTER', $serial_id, $ispconfig_id)");
        //$app->db->query("INSERT INTO powerdns.domains (name, type, ispconfig_id) VALUES ('$origin', 'NATIVE', $ispconfig_id)");
        $zone_id = mysql_insert_id();
        if(substr($data["new"]["ns"], -1) == '.'){
            $ns = substr($data["new"]["ns"], 0, -1);
@@ -141,10 +145,12 @@
        
        $hostmaster = substr($data["new"]["mbox"], 0, -1);
        $content = $ns.' '.$hostmaster.' 0';
        //$content = $ns.' '.$hostmaster.' '.$serial_id.'';
        $ttl = $data["new"]["ttl"];
        
        $app->db->query("INSERT INTO powerdns.records (domain_id, name, type, content, ttl, prio, change_date, ispconfig_id) VALUES ($zone_id, '$origin', 'SOA', '$content', $ttl, 0, ".time().", $ispconfig_id)");
        //* Reload powerdns nameserver
        $app->services->restartServiceDelayed('powerdns','reload');
    
    }
    
@@ -160,8 +166,8 @@
                $ispconfig_id = $data["new"]["id"];
                $serial = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ".$ispconfig_id);
                $serial_id = $serial["serial"];
                //$app->db->query("UPDATE powerdns.domains SET name = '$origin', notified_serial = $serial_id WHERE ispconfig_id = $ispconfig_id");
                //$app->db->query("UPDATE powerdns.domains SET name = '$origin' WHERE ispconfig_id = $ispconfig_id");
                //$app->db->query("UPDATE powerdns.domains SET name = '$origin', notified_serial = $serial_id WHERE ispconfig_id = $ispconfig_idi AND type = 'MASTER'");
                //$app->db->query("UPDATE powerdns.domains SET name = '$origin' WHERE ispconfig_id = $ispconfig_id AND type = 'MASTER'");
        
                if(substr($data["new"]["ns"], -1) == '.'){
                    $ns = substr($data["new"]["ns"], 0, -1);
@@ -175,6 +181,11 @@
                $content = $ns.' '.$hostmaster.' '.$serial_id.'';
                $ttl = $data["new"]["ttl"];
                $app->db->query("UPDATE powerdns.records SET name = '$origin', content = '$content', ttl = $ttl, change_date = ".time()." WHERE ispconfig_id = ".$data["new"]["id"]." AND type = 'SOA'");
                //* Reload powerdns nameserver
                $app->services->restartServiceDelayed('powerdns','reload');
            } else {
                $this->soa_insert($event_name,$data);
                $ispconfig_id = $data["new"]["id"];
@@ -195,11 +206,78 @@
    function soa_delete($event_name,$data) {
        global $app, $conf;
        
        $zone = $app->db->queryOneRecord("SELECT * FROM powerdns.domains WHERE ispconfig_id = ".$data["old"]["id"]);
        $zone = $app->db->queryOneRecord("SELECT * FROM powerdns.domains WHERE ispconfig_id = ".$data["old"]["id"]." AND type = 'MASTER'");
        $zone_id = $zone["id"];
        $app->db->query("DELETE FROM powerdns.records WHERE domain_id = $zone_id");
        $app->db->query("DELETE FROM powerdns.domains WHERE id = $zone_id");
        //* Reload powerdns nameserver
        $app->services->restartServiceDelayed('powerdns','reload');
            
    }
    function slave_insert($event_name,$data) {
        global $app, $conf;
        if($data["new"]["active"] != 'Y') return;
        $origin = substr($data["new"]["origin"], 0, -1);
        $ispconfig_id = $data["new"]["id"];
        $master_ns = $data["new"]["ns"];
        $app->db->query("INSERT INTO powerdns.domains (name, type, master, ispconfig_id) VALUES ('$origin', 'SLAVE', '$master_ns', $ispconfig_id)");
        //$app->db->query("INSERT INTO powerdns.domains (name, type, ispconfig_id) VALUES ('$origin', 'NATIVE', $ispconfig_id)");
        $zone_id = mysql_insert_id();
        //* Reload powerdns nameserver
        $app->services->restartServiceDelayed('powerdns','reload');
    }
    function slave_update($event_name,$data) {
        global $app, $conf;
        if($data["new"]["active"] != 'Y'){
            if($data["old"]["active"] != 'Y') return;
            $this->slave_delete($event_name,$data);
        } else {
            if($data["old"]["active"] == 'Y'){
                 $origin = substr($data["new"]["origin"], 0, -1);
                  $ispconfig_id = $data["new"]["id"];
                $master_ns = $data["new"]["ns"];
                $app->db->query("UPDATE powerdns.domains SET name = '$origin', type = 'SLAVE', master = '$master_ns' WHERE ispconfig_id=$ispconfig_id AND type = 'SLAVE'");
                //$app->db->query("INSERT INTO powerdns.domains (name, type, ispconfig_id) VALUES ('$origin', 'NATIVE', $ispconfig_id)");
                $zone_id = mysql_insert_id();
                $zone = $app->db->queryOneRecord("SELECT * FROM powerdns.domains WHERE ispconfig_id = ".$ispconfig_id." AND type = 'SLAVE'");
                $zone_id = $zone["id"];
                $app->db->query("DELETE FROM powerdns.records WHERE domain_id = $zone_id AND ispconfig_id = 0");
                //* Reload powerdns nameserver
                $app->services->restartServiceDelayed('powerdns','reload');
            } else {
                $this->slave_insert($event_name,$data);
            }
        }
    }
    function slave_delete($event_name,$data) {
        global $app, $conf;
        $zone = $app->db->queryOneRecord("SELECT * FROM powerdns.domains WHERE ispconfig_id = ".$data["old"]["id"]." AND type = 'SLAVE'");
        $zone_id = $zone["id"];
        $app->db->query("DELETE FROM powerdns.records WHERE domain_id = $zone_id");
        $app->db->query("DELETE FROM powerdns.domains WHERE id = $zone_id");
        //* Reload powerdns nameserver
        $app->services->restartServiceDelayed('powerdns','reload');
    }
    
    function rr_insert($event_name,$data) {
@@ -208,7 +286,7 @@
        
        $zone = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ".$data["new"]["zone"]);
        $origin = substr($zone["origin"], 0, -1);
        $powerdns_zone = $app->db->queryOneRecord("SELECT * FROM powerdns.domains WHERE ispconfig_id = ".$data["new"]["zone"]);
        $powerdns_zone = $app->db->queryOneRecord("SELECT * FROM powerdns.domains WHERE ispconfig_id = ".$data["new"]["zone"]." AND type = 'MASTER'");
        $zone_id = $powerdns_zone["id"];
        
        $type = $data["new"]["type"];
@@ -271,7 +349,7 @@
            if($data["old"]["active"] == 'Y'){
                $zone = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ".$data["new"]["zone"]);
                $origin = substr($zone["origin"], 0, -1);
                $powerdns_zone = $app->db->queryOneRecord("SELECT * FROM powerdns.domains WHERE ispconfig_id = ".$data["new"]["zone"]);
                $powerdns_zone = $app->db->queryOneRecord("SELECT * FROM powerdns.domains WHERE ispconfig_id = ".$data["new"]["zone"]." AND type = 'MASTER'");
                $zone_id = $powerdns_zone["id"];
                
                $type = $data["new"]["type"];    
@@ -338,8 +416,6 @@
    }
    
    
} // end class
?>
?>