From ca069831cd635f6155ea7c2504b47bbea95c76e5 Mon Sep 17 00:00:00 2001
From: Florian Schaal <florian@schaal-24.de>
Date: Wed, 21 Oct 2015 08:53:50 -0400
Subject: [PATCH] FS#1990 - Additional V-Server Field - this commits add a custom-field for openvz-configs
---
interface/web/vm/lib/lang/fr_openvz_template.lng | 2
interface/web/vm/lib/lang/se_openvz_template.lng | 2
interface/web/vm/lib/lang/ar_openvz_template.lng | 2
interface/web/vm/lib/lang/ja_openvz_template.lng | 2
interface/web/vm/lib/lang/ro_openvz_template.lng | 2
interface/web/vm/lib/lang/pl_openvz_template.lng | 2
interface/web/vm/lib/lang/hu_openvz_vm.lng | 1
interface/web/vm/lib/lang/sk_openvz_template.lng | 2
install/sql/ispconfig3.sql | 4
install/sql/incremental/upd_dev_collection.sql | 4 +
interface/web/vm/lib/lang/hu_openvz_template.lng | 2
interface/web/vm/lib/lang/pt_openvz_vm.lng | 1
interface/web/vm/lib/lang/el_openvz_vm.lng | 1
interface/web/vm/lib/lang/sk_openvz_vm.lng | 1
interface/web/vm/lib/lang/de_openvz_template.lng | 2
interface/web/vm/lib/lang/tr_openvz_vm.lng | 1
interface/web/vm/lib/lang/cz_openvz_template.lng | 2
interface/web/vm/lib/lang/de_openvz_vm.lng | 1
interface/web/vm/lib/lang/it_openvz_template.lng | 2
interface/web/vm/lib/lang/hr_openvz_vm.lng | 1
interface/web/vm/lib/lang/br_openvz_template.lng | 2
interface/web/vm/lib/lang/id_openvz_vm.lng | 1
interface/web/vm/lib/lang/nl_openvz_template.lng | 2
interface/web/vm/lib/lang/fi_openvz_template.lng | 2
interface/web/vm/lib/lang/pl_openvz_vm.lng | 1
interface/web/vm/form/openvz_vm.tform.php | 17 ++++
interface/web/vm/lib/lang/br_openvz_vm.lng | 1
interface/web/vm/lib/lang/es_openvz_template.lng | 2
interface/lib/classes/validate_openvz.inc.php | 66 ++++++++++++++++
interface/web/vm/lib/lang/ru_openvz_template.lng | 2
interface/web/vm/lib/lang/se_openvz_vm.lng | 1
interface/web/vm/lib/lang/ar_openvz_vm.lng | 1
interface/web/vm/lib/lang/id_openvz_template.lng | 2
interface/web/vm/lib/lang/tr_openvz_template.lng | 2
interface/web/vm/templates/openvz_vm_advanced_edit.htm | 4 +
interface/web/vm/lib/lang/en_openvz_template.lng | 2
interface/web/vm/lib/lang/fr_openvz_vm.lng | 1
interface/web/vm/lib/lang/ja_openvz_vm.lng | 1
interface/web/vm/form/openvz_template.tform.php | 16 ++++
interface/web/vm/lib/lang/nl_openvz_vm.lng | 1
interface/web/vm/lib/lang/ro_openvz_vm.lng | 1
interface/lib/plugins/vm_openvz_plugin.inc.php | 5 +
interface/web/vm/lib/lang/es_openvz_vm.lng | 1
interface/web/vm/lib/lang/pt_openvz_template.lng | 2
interface/web/vm/lib/lang/ru_openvz_vm.lng | 1
interface/web/vm/lib/lang/bg_openvz_template.lng | 2
interface/web/vm/lib/lang/en_openvz_vm.lng | 1
interface/web/vm/lib/lang/fi_openvz_vm.lng | 1
interface/web/vm/lib/lang/bg_openvz_vm.lng | 1
interface/web/vm/lib/lang/hr_openvz_template.lng | 2
interface/web/vm/lib/lang/it_openvz_vm.lng | 1
interface/web/vm/lib/lang/el_openvz_template.lng | 2
interface/web/vm/templates/openvz.conf.tpl | 1
interface/web/vm/lib/lang/cz_openvz_vm.lng | 1
interface/web/vm/templates/openvz_template_advanced_edit.htm | 4
55 files changed, 187 insertions(+), 3 deletions(-)
diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql
index bbf80e6..f034486 100644
--- a/install/sql/incremental/upd_dev_collection.sql
+++ b/install/sql/incremental/upd_dev_collection.sql
@@ -168,3 +168,7 @@
ALTER TABLE `web_domain` ADD COLUMN `rewrite_to_https` ENUM('y','n') NOT NULL DEFAULT 'n' AFTER `seo_redirect`;
ALTER TABLE openvz_ip ADD COLUMN `additional` VARCHAR(255) NOT NULL DEFAULT 'n';
+
+ALTER TABLE openvz_template ADD COLUMN `custom` text;
+ALTER TABLE openvz_vm ADD COLUMN `custom` text;
+
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index 6089f3f..ece5558 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -1093,6 +1093,7 @@
`capability` varchar(255) DEFAULT NULL,
`features` varchar(255) DEFAULT NULL,
`iptables` varchar(255) DEFAULT NULL,
+ `custom` text,
PRIMARY KEY (`template_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
@@ -1100,7 +1101,7 @@
-- Dumping data for table `openvz_template`
--
-INSERT INTO `openvz_template` (`template_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `template_name`, `diskspace`, `traffic`, `bandwidth`, `ram`, `ram_burst`, `cpu_units`, `cpu_num`, `cpu_limit`, `io_priority`, `active`, `description`, `numproc`, `numtcpsock`, `numothersock`, `vmguarpages`, `kmemsize`, `tcpsndbuf`, `tcprcvbuf`, `othersockbuf`, `dgramrcvbuf`, `oomguarpages`, `privvmpages`, `lockedpages`, `shmpages`, `physpages`, `numfile`, `avnumproc`, `numflock`, `numpty`, `numsiginfo`, `dcachesize`, `numiptent`, `swappages`, `hostname`, `nameserver`, `create_dns`, `capability`, `features`, `iptables`) VALUES(1, 1, 1, 'riud', 'riud', '', 'small', 10, -1, -1, 256, 512, 1000, 4, 400, 4, 'y', '', '999999:999999', '7999992:7999992', '7999992:7999992', '65536:65536', '2147483646:2147483646', '214748160:396774400', '214748160:396774400', '214748160:396774400', '214748160:396774400', '65536:65536', '131072:131072', '999999:999999', '65536:65536', '0:2147483647', '23999976:23999976', '180:180', '999999:999999', '500000:500000', '999999:999999', '2147483646:2147483646', '999999:999999', '256000:256000', 'v{VEID}.test.tld', '8.8.8.8 8.8.4.4', 'n', '', '', '');
+INSERT INTO `openvz_template` (`template_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `template_name`, `diskspace`, `traffic`, `bandwidth`, `ram`, `ram_burst`, `cpu_units`, `cpu_num`, `cpu_limit`, `io_priority`, `active`, `description`, `numproc`, `numtcpsock`, `numothersock`, `vmguarpages`, `kmemsize`, `tcpsndbuf`, `tcprcvbuf`, `othersockbuf`, `dgramrcvbuf`, `oomguarpages`, `privvmpages`, `lockedpages`, `shmpages`, `physpages`, `numfile`, `avnumproc`, `numflock`, `numpty`, `numsiginfo`, `dcachesize`, `numiptent`, `swappages`, `hostname`, `nameserver`, `create_dns`, `capability`, `features`, `iptables`) VALUES(1, 1, 1, 'riud', 'riud', '', 'small', 10, -1, -1, 256, 512, 1000, 4, 400, 4, 'y', '', '999999:999999', '7999992:7999992', '7999992:7999992', '65536:65536', '2147483646:2147483646', '214748160:396774400', '214748160:396774400', '214748160:396774400', '214748160:396774400', '65536:65536', '131072:131072', '999999:999999', '65536:65536', '0:2147483647', '23999976:23999976', '180:180', '999999:999999', '500000:500000', '999999:999999', '2147483646:2147483646', '999999:999999', '256000:256000', 'v{VEID}.test.tld', '8.8.8.8 8.8.4.4', 'n', '', '', '', '');
-- --------------------------------------------------------
@@ -1159,6 +1160,7 @@
`features` text,
`iptabless` text,
`config` mediumtext,
+ `custom` text,
PRIMARY KEY (`vm_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
diff --git a/interface/lib/classes/validate_openvz.inc.php b/interface/lib/classes/validate_openvz.inc.php
new file mode 100644
index 0000000..75e41fe
--- /dev/null
+++ b/interface/lib/classes/validate_openvz.inc.php
@@ -0,0 +1,66 @@
+<?php
+
+/**
+ Copyright (c) 2015, Florian Schaal, schaal @it
+ 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.
+
+ @author Florian Schaal, info@schaal-24.de
+ @copyrighth Florian Schaal, info@schaal-24.de
+ */
+
+class validate_openvz {
+
+ function get_error($errmsg, $additional='') {
+ global $app;
+ if(isset($app->tform->wordbook[$errmsg])) {
+ return $app->tform->wordbook[$errmsg].$additional."<br>\r\n";
+ } else {
+ return $errmsg."<br>".$additional."<br>\r\n";
+ }
+ }
+
+ function check_custom($field_name, $field_value, $validator) {
+ $template = file('../vm/templates/openvz.conf.tpl', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
+ $custom_array = explode("\n", $field_value);
+ $used_parameters = array();
+ foreach ($template as $line) {
+ $line = trim ($line);
+ if (preg_match('/^[^#].*=\".*\"/', $line)) {
+ $line = explode('=', $line, 2);
+ $used_parameters[] = $line[0];
+ }
+ }
+ foreach ($custom_array as $check) {
+ $check = trim(strtoupper($check));
+ $check = explode('=', trim($check), 2);
+ $check = trim($check[0]);
+ if (in_array($check, $used_parameters)) {
+ return $this->get_error($validator['errmsg'], $check);
+ }
+ }
+ }
+
+}
diff --git a/interface/lib/plugins/vm_openvz_plugin.inc.php b/interface/lib/plugins/vm_openvz_plugin.inc.php
index 5f6e3bb..aae645c 100644
--- a/interface/lib/plugins/vm_openvz_plugin.inc.php
+++ b/interface/lib/plugins/vm_openvz_plugin.inc.php
@@ -156,8 +156,9 @@
$sql .= "capability = ?, ";
$sql .= "features = ?, ";
$sql .= "iptables = ? ";
+ $sql .= "custom = ? ";
$sql .= "WHERE vm_id = ?";
- $app->db->query($sql, $tpl['diskspace'], $tpl['ram'], $tpl['ram_burst'], $tpl['cpu_units'], $tpl['cpu_num'], $tpl['cpu_limit'], $tpl['io_priority'], $tpl['nameserver'], $tpl['create_dns'], $tpl['capability'], $tpl['features'], $tpl['iptables'], $this->id);
+ $app->db->query($sql, $tpl['diskspace'], $tpl['ram'], $tpl['ram_burst'], $tpl['cpu_units'], $tpl['cpu_num'], $tpl['cpu_limit'], $tpl['io_priority'], $tpl['nameserver'], $tpl['create_dns'], $tpl['capability'], $tpl['features'], $tpl['iptables'], $tpl['custom'], $this->id);
}
@@ -230,6 +231,8 @@
$tpl->setVar('features', $vm['features']);
$tpl->setVar('iptables', $vm['iptables']);
+ $tpl->setVar('custom', $vm['custom']);
+
$tmp = $app->db->queryOneRecord("SELECT template_file FROM openvz_ostemplate WHERE ostemplate_id = ?", $app->functions->intval($vm['ostemplate_id']));
$tpl->setVar('ostemplate', $tmp['template_file']);
unset($tmp);
diff --git a/interface/web/vm/form/openvz_template.tform.php b/interface/web/vm/form/openvz_template.tform.php
index fd67c99..8279ce0 100644
--- a/interface/web/vm/form/openvz_template.tform.php
+++ b/interface/web/vm/form/openvz_template.tform.php
@@ -475,6 +475,22 @@
'width' => '30',
'maxlength' => '255'
),
+ 'custom' => array (
+ 'datatype' => 'TEXT',
+ 'formtype' => 'TEXTAREA',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '',
+ 'maxlength' => '',
+ 'rows' => '10',
+ 'cols' => '30',
+ 'validators' => array ( 0 => array ('type' => 'CUSTOM',
+ 'class' => 'validate_openvz',
+ 'function' => 'check_custom',
+ 'errmsg'=> 'custom_error'),
+ ),
+ ),
//#################################
// ENDE Datatable fields
//#################################
diff --git a/interface/web/vm/form/openvz_vm.tform.php b/interface/web/vm/form/openvz_vm.tform.php
index d6911cc..37bf869 100644
--- a/interface/web/vm/form/openvz_vm.tform.php
+++ b/interface/web/vm/form/openvz_vm.tform.php
@@ -322,6 +322,23 @@
'width' => '30',
'maxlength' => '255'
),
+ 'custom' => array (
+ 'datatype' => 'TEXT',
+ 'formtype' => 'TEXTAREA',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '',
+ 'maxlength' => '',
+ 'rows' => '10',
+ 'cols' => '30',
+ 'searchable' => 2,
+ 'validators' => array ( 0 => array ('type' => 'CUSTOM',
+ 'class' => 'validate_openvz',
+ 'function' => 'check_custom',
+ 'errmsg'=> 'custom_error'),
+ ),
+ ),
//#################################
// ENDE Datatable fields
//#################################
diff --git a/interface/web/vm/lib/lang/ar_openvz_template.lng b/interface/web/vm/lib/lang/ar_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/ar_openvz_template.lng
+++ b/interface/web/vm/lib/lang/ar_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/ar_openvz_vm.lng b/interface/web/vm/lib/lang/ar_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/ar_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/ar_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/bg_openvz_template.lng b/interface/web/vm/lib/lang/bg_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/bg_openvz_template.lng
+++ b/interface/web/vm/lib/lang/bg_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/bg_openvz_vm.lng b/interface/web/vm/lib/lang/bg_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/bg_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/bg_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/br_openvz_template.lng b/interface/web/vm/lib/lang/br_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/br_openvz_template.lng
+++ b/interface/web/vm/lib/lang/br_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/br_openvz_vm.lng b/interface/web/vm/lib/lang/br_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/br_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/br_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/cz_openvz_template.lng b/interface/web/vm/lib/lang/cz_openvz_template.lng
index 3abd816..26434be 100644
--- a/interface/web/vm/lib/lang/cz_openvz_template.lng
+++ b/interface/web/vm/lib/lang/cz_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Pokročilý';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/cz_openvz_vm.lng b/interface/web/vm/lib/lang/cz_openvz_vm.lng
index eaf12b7..9d20c9b 100644
--- a/interface/web/vm/lib/lang/cz_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/cz_openvz_vm.lng
@@ -39,5 +39,6 @@
$wb['Advanced'] = 'Pokročilý';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/de_openvz_template.lng b/interface/web/vm/lib/lang/de_openvz_template.lng
index c86e878..776e14a 100644
--- a/interface/web/vm/lib/lang/de_openvz_template.lng
+++ b/interface/web/vm/lib/lang/de_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Erweitert';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/de_openvz_vm.lng b/interface/web/vm/lib/lang/de_openvz_vm.lng
index edce4b7..467af85 100644
--- a/interface/web/vm/lib/lang/de_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/de_openvz_vm.lng
@@ -38,4 +38,5 @@
$wb['Virtual server'] = 'Virtueller Server';
$wb['Advanced'] = 'Erweitert';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/el_openvz_template.lng b/interface/web/vm/lib/lang/el_openvz_template.lng
index b8c6543..75b2d7f 100644
--- a/interface/web/vm/lib/lang/el_openvz_template.lng
+++ b/interface/web/vm/lib/lang/el_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/el_openvz_vm.lng b/interface/web/vm/lib/lang/el_openvz_vm.lng
index c74b102..24b6e26 100644
--- a/interface/web/vm/lib/lang/el_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/el_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Για προχωρημένους';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/en_openvz_template.lng b/interface/web/vm/lib/lang/en_openvz_template.lng
index a2b7f8d..cb648cb 100644
--- a/interface/web/vm/lib/lang/en_openvz_template.lng
+++ b/interface/web/vm/lib/lang/en_openvz_template.lng
@@ -92,4 +92,6 @@
$wb["Advanced"] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/en_openvz_vm.lng b/interface/web/vm/lib/lang/en_openvz_vm.lng
index 67cdbfd..213e3ad 100644
--- a/interface/web/vm/lib/lang/en_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/en_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb["Advanced"] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/es_openvz_template.lng b/interface/web/vm/lib/lang/es_openvz_template.lng
index cad0933..bffc717 100644
--- a/interface/web/vm/lib/lang/es_openvz_template.lng
+++ b/interface/web/vm/lib/lang/es_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Avanzado';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/es_openvz_vm.lng b/interface/web/vm/lib/lang/es_openvz_vm.lng
index 6a88f4f..2982a9a 100644
--- a/interface/web/vm/lib/lang/es_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/es_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Avanzado';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/fi_openvz_template.lng b/interface/web/vm/lib/lang/fi_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/fi_openvz_template.lng
+++ b/interface/web/vm/lib/lang/fi_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/fi_openvz_vm.lng b/interface/web/vm/lib/lang/fi_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/fi_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/fi_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/fr_openvz_template.lng b/interface/web/vm/lib/lang/fr_openvz_template.lng
index 66db265..c2554a0 100644
--- a/interface/web/vm/lib/lang/fr_openvz_template.lng
+++ b/interface/web/vm/lib/lang/fr_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Avancé';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/fr_openvz_vm.lng b/interface/web/vm/lib/lang/fr_openvz_vm.lng
index 26d21a0..d01f624 100644
--- a/interface/web/vm/lib/lang/fr_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/fr_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Avancé';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/hr_openvz_template.lng b/interface/web/vm/lib/lang/hr_openvz_template.lng
index 69b36b9..622274b 100644
--- a/interface/web/vm/lib/lang/hr_openvz_template.lng
+++ b/interface/web/vm/lib/lang/hr_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Napredno';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/hr_openvz_vm.lng b/interface/web/vm/lib/lang/hr_openvz_vm.lng
index 6ae18e1..5169eb9 100644
--- a/interface/web/vm/lib/lang/hr_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/hr_openvz_vm.lng
@@ -39,6 +39,7 @@
$wb['Advanced'] = 'Napredno';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/hu_openvz_template.lng b/interface/web/vm/lib/lang/hu_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/hu_openvz_template.lng
+++ b/interface/web/vm/lib/lang/hu_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/hu_openvz_vm.lng b/interface/web/vm/lib/lang/hu_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/hu_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/hu_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/id_openvz_template.lng b/interface/web/vm/lib/lang/id_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/id_openvz_template.lng
+++ b/interface/web/vm/lib/lang/id_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/id_openvz_vm.lng b/interface/web/vm/lib/lang/id_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/id_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/id_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/it_openvz_template.lng b/interface/web/vm/lib/lang/it_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/it_openvz_template.lng
+++ b/interface/web/vm/lib/lang/it_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/it_openvz_vm.lng b/interface/web/vm/lib/lang/it_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/it_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/it_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/ja_openvz_template.lng b/interface/web/vm/lib/lang/ja_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/ja_openvz_template.lng
+++ b/interface/web/vm/lib/lang/ja_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/ja_openvz_vm.lng b/interface/web/vm/lib/lang/ja_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/ja_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/ja_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/nl_openvz_template.lng b/interface/web/vm/lib/lang/nl_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/nl_openvz_template.lng
+++ b/interface/web/vm/lib/lang/nl_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/nl_openvz_vm.lng b/interface/web/vm/lib/lang/nl_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/nl_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/nl_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/pl_openvz_template.lng b/interface/web/vm/lib/lang/pl_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/pl_openvz_template.lng
+++ b/interface/web/vm/lib/lang/pl_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/pl_openvz_vm.lng b/interface/web/vm/lib/lang/pl_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/pl_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/pl_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/pt_openvz_template.lng b/interface/web/vm/lib/lang/pt_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/pt_openvz_template.lng
+++ b/interface/web/vm/lib/lang/pt_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/pt_openvz_vm.lng b/interface/web/vm/lib/lang/pt_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/pt_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/pt_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/ro_openvz_template.lng b/interface/web/vm/lib/lang/ro_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/ro_openvz_template.lng
+++ b/interface/web/vm/lib/lang/ro_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/ro_openvz_vm.lng b/interface/web/vm/lib/lang/ro_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/ro_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/ro_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/ru_openvz_template.lng b/interface/web/vm/lib/lang/ru_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/ru_openvz_template.lng
+++ b/interface/web/vm/lib/lang/ru_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/ru_openvz_vm.lng b/interface/web/vm/lib/lang/ru_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/ru_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/ru_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/se_openvz_template.lng b/interface/web/vm/lib/lang/se_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/se_openvz_template.lng
+++ b/interface/web/vm/lib/lang/se_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/se_openvz_vm.lng b/interface/web/vm/lib/lang/se_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/se_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/se_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/sk_openvz_template.lng b/interface/web/vm/lib/lang/sk_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/sk_openvz_template.lng
+++ b/interface/web/vm/lib/lang/sk_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/sk_openvz_vm.lng b/interface/web/vm/lib/lang/sk_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/sk_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/sk_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/lib/lang/tr_openvz_template.lng b/interface/web/vm/lib/lang/tr_openvz_template.lng
index 262cad0..27dfbbb 100644
--- a/interface/web/vm/lib/lang/tr_openvz_template.lng
+++ b/interface/web/vm/lib/lang/tr_openvz_template.lng
@@ -92,4 +92,6 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
+$wb["custom_error"] = "Not allowed in Custom settings: ";
?>
diff --git a/interface/web/vm/lib/lang/tr_openvz_vm.lng b/interface/web/vm/lib/lang/tr_openvz_vm.lng
index 3f4e1c1..bbf388a 100644
--- a/interface/web/vm/lib/lang/tr_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/tr_openvz_vm.lng
@@ -39,4 +39,5 @@
$wb['Advanced'] = 'Advanced';
$wb['features_txt'] = 'Features';
$wb["iptables_txt"] = "IP Tables";
+$wb["custom_txt"] = "Custom settings";
?>
diff --git a/interface/web/vm/templates/openvz.conf.tpl b/interface/web/vm/templates/openvz.conf.tpl
index 1cb4dc0..a2b061a 100644
--- a/interface/web/vm/templates/openvz.conf.tpl
+++ b/interface/web/vm/templates/openvz.conf.tpl
@@ -50,3 +50,4 @@
CAPABILITY="{tmpl_var name='capability'}"
FEATURES="{tmpl_var name='features'}"
IPTABLES="{tmpl_var name='iptables'}"
+{tmpl_var name='custom'}
diff --git a/interface/web/vm/templates/openvz_template_advanced_edit.htm b/interface/web/vm/templates/openvz_template_advanced_edit.htm
index d3dee9a..3712906 100644
--- a/interface/web/vm/templates/openvz_template_advanced_edit.htm
+++ b/interface/web/vm/templates/openvz_template_advanced_edit.htm
@@ -80,7 +80,9 @@
<div class="form-group">
<label for="iptables" class="col-sm-3 control-label">{tmpl_var name='iptables_txt'}</label>
<div class="col-sm-9"><input type="text" name="iptables" id="iptables" value="{tmpl_var name='iptables'}" class="form-control" /></div></div>
-
+ <div class="form-group">
+ <label for="custom" class="col-sm-3 control-label">{tmpl_var name='custom_txt'}</label>
+ <div class="col-sm-9"><textarea class="form-control" name="custom" id="custom" rows='10' cols='30'>{tmpl_var name='custom'}</textarea></div></div>
<input type="hidden" name="id" value="{tmpl_var name='id'}">
diff --git a/interface/web/vm/templates/openvz_vm_advanced_edit.htm b/interface/web/vm/templates/openvz_vm_advanced_edit.htm
index 83bbb3d..a25d715 100644
--- a/interface/web/vm/templates/openvz_vm_advanced_edit.htm
+++ b/interface/web/vm/templates/openvz_vm_advanced_edit.htm
@@ -58,6 +58,10 @@
<label for="iptables" class="col-sm-3 control-label">{tmpl_var name='iptables_txt'}</label>
<div class="col-sm-9"><input type="text" name="iptables" id="iptables" value="{tmpl_var name='iptables'}" class="form-control" />
</div></div>
+ <div class="form-group">
+ <label for="custom" class="col-sm-3 control-label">{tmpl_var name='custom_txt'}</label>
+ <div class="col-sm-9"><textarea class="form-control" name="custom" id="custom" rows='10' cols='30'>{tmpl_var name='custom'}</textarea></div>
+ </div>
<input type="hidden" name="id" value="{tmpl_var name='id'}">
--
Gitblit v1.9.1