From 503bbb5b05c6ec24e1c5dc7afa71cee3ab8578c2 Mon Sep 17 00:00:00 2001
From: Florian Schaal <florian@schaal-24.de>
Date: Mon, 27 Apr 2015 07:24:09 -0400
Subject: [PATCH] added 'features' (like nfs:on) to openvz

---
 interface/web/vm/lib/lang/fr_openvz_template.lng             |    1 
 interface/web/vm/lib/lang/se_openvz_template.lng             |    1 
 interface/web/vm/lib/lang/ar_openvz_template.lng             |    1 
 interface/web/vm/lib/lang/ja_openvz_template.lng             |    1 
 interface/web/vm/lib/lang/ro_openvz_template.lng             |    1 
 interface/web/vm/lib/lang/pl_openvz_template.lng             |    1 
 interface/web/vm/lib/lang/hu_openvz_vm.lng                   |    1 
 interface/web/vm/lib/lang/sk_openvz_template.lng             |    1 
 install/sql/ispconfig3.sql                                   |    4 +
 install/sql/incremental/upd_dev_collection.sql               |    5 ++
 interface/web/vm/lib/lang/hu_openvz_template.lng             |    1 
 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             |    1 
 interface/web/vm/lib/lang/tr_openvz_vm.lng                   |    1 
 interface/web/vm/lib/lang/cz_openvz_template.lng             |    1 
 interface/web/vm/lib/lang/it_openvz_template.lng             |    1 
 interface/web/vm/lib/lang/hr_openvz_vm.lng                   |    1 
 interface/web/vm/lib/lang/br_openvz_template.lng             |    1 
 interface/web/vm/lib/lang/id_openvz_vm.lng                   |    1 
 interface/web/vm/lib/lang/nl_openvz_template.lng             |    1 
 interface/web/vm/lib/lang/fi_openvz_template.lng             |    1 
 interface/web/vm/lib/lang/pl_openvz_vm.lng                   |    1 
 interface/web/vm/form/openvz_vm.tform.php                    |    8 ++++
 interface/web/vm/lib/lang/br_openvz_vm.lng                   |    1 
 interface/web/vm/lib/lang/es_openvz_template.lng             |    1 
 interface/web/vm/lib/lang/ru_openvz_template.lng             |    1 
 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             |    1 
 interface/web/vm/lib/lang/tr_openvz_template.lng             |    1 
 interface/web/vm/templates/openvz_vm_advanced_edit.htm       |    9 +++-
 interface/web/vm/lib/lang/en_openvz_template.lng             |    3 +
 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              |    8 ++++
 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               |    6 ++-
 interface/web/vm/lib/lang/es_openvz_vm.lng                   |    1 
 interface/web/vm/lib/lang/pt_openvz_template.lng             |    1 
 interface/web/vm/lib/lang/ru_openvz_vm.lng                   |    1 
 interface/web/vm/lib/lang/bg_openvz_template.lng             |    1 
 interface/web/vm/lib/lang/en_openvz_vm.lng                   |    3 +
 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             |    1 
 interface/web/vm/lib/lang/it_openvz_vm.lng                   |    1 
 interface/web/vm/lib/lang/el_openvz_template.lng             |    1 
 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 |    5 ++
 53 files changed, 86 insertions(+), 9 deletions(-)

diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql
index 2802314..3b6deb6 100644
--- a/install/sql/incremental/upd_dev_collection.sql
+++ b/install/sql/incremental/upd_dev_collection.sql
@@ -140,4 +140,7 @@
 ALTER TABLE `directive_snippets` ADD `required_php_snippets` VARCHAR(255) NOT NULL DEFAULT '' AFTER `customer_viewable`;
 ALTER TABLE `dns_rr` CHANGE `ttl` `ttl` INT(11) UNSIGNED NOT NULL DEFAULT '3600';
 ALTER TABLE `dns_soa` CHANGE `minimum` `minimum` INT(11) UNSIGNED NOT NULL DEFAULT '3600', CHANGE `ttl` `ttl` INT(11) UNSIGNED NOT NULL DEFAULT '3600';
-ALTER TABLE `client` CHANGE `web_php_options` `web_php_options` VARCHAR(255) NOT NULL DEFAULT 'no,fast-cgi,cgi,mod,suphp,php-fpm,hhvm';
\ No newline at end of file
+ALTER TABLE `client` CHANGE `web_php_options` `web_php_options` VARCHAR(255) NOT NULL DEFAULT 'no,fast-cgi,cgi,mod,suphp,php-fpm,hhvm';
+
+ALTER TABLE openvz_template ADD COLUMN `features` varchar(255) DEFAULT NULL AFTER `capability`;
+ALTER TABLE openvz_vm ADD COLUMN `features` TEXT DEFAULT NULL AFTER `capability`;
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index 9b8428d..c634762 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -1087,6 +1087,7 @@
   `nameserver` varchar(255) DEFAULT NULL,
   `create_dns` varchar(1) NOT NULL DEFAULT 'n',
   `capability` varchar(255) DEFAULT NULL,
+  `features` varchar(255) DEFAULT NULL,
   PRIMARY KEY (`template_id`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;
 
@@ -1094,7 +1095,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`) 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`) 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', '', '');
 
 -- --------------------------------------------------------
 
@@ -1150,6 +1151,7 @@
   `nameserver` varchar(255) NOT NULL DEFAULT '8.8.8.8 8.8.4.4',
   `create_dns` varchar(1) NOT NULL DEFAULT 'n',
   `capability` text,
+  `features` text,
   `config` mediumtext,
   PRIMARY KEY (`vm_id`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;
diff --git a/interface/lib/plugins/vm_openvz_plugin.inc.php b/interface/lib/plugins/vm_openvz_plugin.inc.php
index dcd2df7..7cf46e6 100644
--- a/interface/lib/plugins/vm_openvz_plugin.inc.php
+++ b/interface/lib/plugins/vm_openvz_plugin.inc.php
@@ -132,9 +132,10 @@
 		$sql .= "io_priority = ?, ";
 		$sql .= "nameserver = ?, ";
 		$sql .= "create_dns = ?, ";
-		$sql .= "capability = ? ";
+		$sql .= "capability = ?, ";
+		$sql .= "features = ? ";
 		$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'], $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'], $this->id);
 
 	}
 
@@ -193,6 +194,7 @@
 		$tpl->setVar('ip_address', $vm['ip_address']);
 		$tpl->setVar('nameserver', $vm['nameserver']);
 		$tpl->setVar('capability', $vm['capability']);
+		$tpl->setVar('features', $vm['features']);
 
 		$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']);
diff --git a/interface/web/vm/form/openvz_template.tform.php b/interface/web/vm/form/openvz_template.tform.php
index ea49e3a..b2dcc80 100644
--- a/interface/web/vm/form/openvz_template.tform.php
+++ b/interface/web/vm/form/openvz_template.tform.php
@@ -459,6 +459,14 @@
 			'width'  => '30',
 			'maxlength' => '255'
 		),
+		'features' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
 		//#################################
 		// ENDE Datatable fields
 		//#################################
diff --git a/interface/web/vm/form/openvz_vm.tform.php b/interface/web/vm/form/openvz_vm.tform.php
index 759ba2f..4c04846 100644
--- a/interface/web/vm/form/openvz_vm.tform.php
+++ b/interface/web/vm/form/openvz_vm.tform.php
@@ -306,6 +306,14 @@
 				'width'  => '30',
 				'maxlength' => '255'
 			),
+			'features' => array (
+				'datatype' => 'VARCHAR',
+				'formtype' => 'TEXT',
+				'default' => '',
+				'value'  => '',
+				'width'  => '30',
+				'maxlength' => '255'
+			),
 			//#################################
 			// 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 d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/ar_openvz_template.lng
+++ b/interface/web/vm/lib/lang/ar_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/ar_openvz_vm.lng b/interface/web/vm/lib/lang/ar_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/ar_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/ar_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/bg_openvz_template.lng b/interface/web/vm/lib/lang/bg_openvz_template.lng
index d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/bg_openvz_template.lng
+++ b/interface/web/vm/lib/lang/bg_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/bg_openvz_vm.lng b/interface/web/vm/lib/lang/bg_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/bg_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/bg_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/br_openvz_template.lng b/interface/web/vm/lib/lang/br_openvz_template.lng
index d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/br_openvz_template.lng
+++ b/interface/web/vm/lib/lang/br_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/br_openvz_vm.lng b/interface/web/vm/lib/lang/br_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/br_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/br_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/cz_openvz_template.lng b/interface/web/vm/lib/lang/cz_openvz_template.lng
index cf926f6..c7c3025 100644
--- a/interface/web/vm/lib/lang/cz_openvz_template.lng
+++ b/interface/web/vm/lib/lang/cz_openvz_template.lng
@@ -90,5 +90,6 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Šablona';
 $wb['Advanced'] = 'Pokročilý';
+$wb['features_txt'] = 'Features';
 ?>
 
diff --git a/interface/web/vm/lib/lang/cz_openvz_vm.lng b/interface/web/vm/lib/lang/cz_openvz_vm.lng
index b9043e4..148c362 100644
--- a/interface/web/vm/lib/lang/cz_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/cz_openvz_vm.lng
@@ -37,5 +37,6 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Pokročilý';
+$wb['features_txt'] = 'Features';
 ?>
 
diff --git a/interface/web/vm/lib/lang/de_openvz_template.lng b/interface/web/vm/lib/lang/de_openvz_template.lng
index 329a106..add0b41 100644
--- a/interface/web/vm/lib/lang/de_openvz_template.lng
+++ b/interface/web/vm/lib/lang/de_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages ist leer.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Erweitert';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/el_openvz_template.lng b/interface/web/vm/lib/lang/el_openvz_template.lng
index afe2bcd..5aa53cd 100644
--- a/interface/web/vm/lib/lang/el_openvz_template.lng
+++ b/interface/web/vm/lib/lang/el_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/el_openvz_vm.lng b/interface/web/vm/lib/lang/el_openvz_vm.lng
index 4c7950a..875ae3c 100644
--- a/interface/web/vm/lib/lang/el_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/el_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Το Nameserver(s) είναι κενό.';
 $wb['Virtual server'] = 'Εικονικός server';
 $wb['Advanced'] = 'Για προχωρημένους';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/en_openvz_template.lng b/interface/web/vm/lib/lang/en_openvz_template.lng
index e52165b..3e8c97d 100644
--- a/interface/web/vm/lib/lang/en_openvz_template.lng
+++ b/interface/web/vm/lib/lang/en_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb["swappages_error_empty"] = 'Swappages is empty.';
 $wb["Template"] = 'Template';
 $wb["Advanced"] = 'Advanced';
-?>
\ No newline at end of file
+$wb['features_txt'] = 'Features';
+?>
diff --git a/interface/web/vm/lib/lang/en_openvz_vm.lng b/interface/web/vm/lib/lang/en_openvz_vm.lng
index ddd9903..1aa6e8b 100644
--- a/interface/web/vm/lib/lang/en_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/en_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb["template_nameserver_error_empty"] = 'Nameserver(s) is empty.';
 $wb["Virtual server"] = 'Virtual server';
 $wb["Advanced"] = 'Advanced';
-?>
\ No newline at end of file
+$wb['features_txt'] = 'Features';
+?>
diff --git a/interface/web/vm/lib/lang/es_openvz_template.lng b/interface/web/vm/lib/lang/es_openvz_template.lng
index 0f73d40..6955e84 100644
--- a/interface/web/vm/lib/lang/es_openvz_template.lng
+++ b/interface/web/vm/lib/lang/es_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages esta vacío.';
 $wb['Template'] = 'Plantilla';
 $wb['Advanced'] = 'Avanzado';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/es_openvz_vm.lng b/interface/web/vm/lib/lang/es_openvz_vm.lng
index ce5eccb..2224462 100644
--- a/interface/web/vm/lib/lang/es_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/es_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) está vacío.';
 $wb['Virtual server'] = 'Servidor virtual';
 $wb['Advanced'] = 'Avanzado';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/fi_openvz_template.lng b/interface/web/vm/lib/lang/fi_openvz_template.lng
index d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/fi_openvz_template.lng
+++ b/interface/web/vm/lib/lang/fi_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/fi_openvz_vm.lng b/interface/web/vm/lib/lang/fi_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/fi_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/fi_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/fr_openvz_template.lng b/interface/web/vm/lib/lang/fr_openvz_template.lng
index d33091b..5fe1152 100644
--- a/interface/web/vm/lib/lang/fr_openvz_template.lng
+++ b/interface/web/vm/lib/lang/fr_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages est vide.';
 $wb['Template'] = 'Modèle';
 $wb['Advanced'] = 'Avancé';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/fr_openvz_vm.lng b/interface/web/vm/lib/lang/fr_openvz_vm.lng
index f3d69c1..1b6ab56 100644
--- a/interface/web/vm/lib/lang/fr_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/fr_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) est vide.';
 $wb['Virtual server'] = 'Serveur virtuel';
 $wb['Advanced'] = 'Avancé';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/hr_openvz_template.lng b/interface/web/vm/lib/lang/hr_openvz_template.lng
index cd2ad19..eb20160 100644
--- a/interface/web/vm/lib/lang/hr_openvz_template.lng
+++ b/interface/web/vm/lib/lang/hr_openvz_template.lng
@@ -90,6 +90,7 @@
 $wb['swappages_error_empty'] = 'Swappages polje je prazno.';
 $wb['Template'] = 'Predložak';
 $wb['Advanced'] = 'Napredno';
+$wb['features_txt'] = 'Features';
 ?>
 
 
diff --git a/interface/web/vm/lib/lang/hr_openvz_vm.lng b/interface/web/vm/lib/lang/hr_openvz_vm.lng
index bebfd29..31b3ab3 100644
--- a/interface/web/vm/lib/lang/hr_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/hr_openvz_vm.lng
@@ -37,6 +37,7 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(i) polje je prazno.';
 $wb['Virtual server'] = 'Virtualni server';
 $wb['Advanced'] = 'Napredno';
+$wb['features_txt'] = 'Features';
 ?>
 
 
diff --git a/interface/web/vm/lib/lang/hu_openvz_template.lng b/interface/web/vm/lib/lang/hu_openvz_template.lng
index d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/hu_openvz_template.lng
+++ b/interface/web/vm/lib/lang/hu_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/hu_openvz_vm.lng b/interface/web/vm/lib/lang/hu_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/hu_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/hu_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/id_openvz_template.lng b/interface/web/vm/lib/lang/id_openvz_template.lng
index d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/id_openvz_template.lng
+++ b/interface/web/vm/lib/lang/id_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/id_openvz_vm.lng b/interface/web/vm/lib/lang/id_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/id_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/id_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/it_openvz_template.lng b/interface/web/vm/lib/lang/it_openvz_template.lng
index d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/it_openvz_template.lng
+++ b/interface/web/vm/lib/lang/it_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/it_openvz_vm.lng b/interface/web/vm/lib/lang/it_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/it_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/it_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/ja_openvz_template.lng b/interface/web/vm/lib/lang/ja_openvz_template.lng
index d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/ja_openvz_template.lng
+++ b/interface/web/vm/lib/lang/ja_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/ja_openvz_vm.lng b/interface/web/vm/lib/lang/ja_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/ja_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/ja_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/nl_openvz_template.lng b/interface/web/vm/lib/lang/nl_openvz_template.lng
index d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/nl_openvz_template.lng
+++ b/interface/web/vm/lib/lang/nl_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/nl_openvz_vm.lng b/interface/web/vm/lib/lang/nl_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/nl_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/nl_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/pl_openvz_template.lng b/interface/web/vm/lib/lang/pl_openvz_template.lng
index d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/pl_openvz_template.lng
+++ b/interface/web/vm/lib/lang/pl_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/pl_openvz_vm.lng b/interface/web/vm/lib/lang/pl_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/pl_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/pl_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/pt_openvz_template.lng b/interface/web/vm/lib/lang/pt_openvz_template.lng
index d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/pt_openvz_template.lng
+++ b/interface/web/vm/lib/lang/pt_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/pt_openvz_vm.lng b/interface/web/vm/lib/lang/pt_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/pt_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/pt_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/ro_openvz_template.lng b/interface/web/vm/lib/lang/ro_openvz_template.lng
index d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/ro_openvz_template.lng
+++ b/interface/web/vm/lib/lang/ro_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/ro_openvz_vm.lng b/interface/web/vm/lib/lang/ro_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/ro_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/ro_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/ru_openvz_template.lng b/interface/web/vm/lib/lang/ru_openvz_template.lng
index d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/ru_openvz_template.lng
+++ b/interface/web/vm/lib/lang/ru_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/ru_openvz_vm.lng b/interface/web/vm/lib/lang/ru_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/ru_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/ru_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/se_openvz_template.lng b/interface/web/vm/lib/lang/se_openvz_template.lng
index d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/se_openvz_template.lng
+++ b/interface/web/vm/lib/lang/se_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/se_openvz_vm.lng b/interface/web/vm/lib/lang/se_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/se_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/se_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/sk_openvz_template.lng b/interface/web/vm/lib/lang/sk_openvz_template.lng
index d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/sk_openvz_template.lng
+++ b/interface/web/vm/lib/lang/sk_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/sk_openvz_vm.lng b/interface/web/vm/lib/lang/sk_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/sk_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/sk_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/tr_openvz_template.lng b/interface/web/vm/lib/lang/tr_openvz_template.lng
index d285512..c6c489f 100644
--- a/interface/web/vm/lib/lang/tr_openvz_template.lng
+++ b/interface/web/vm/lib/lang/tr_openvz_template.lng
@@ -90,4 +90,5 @@
 $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/lib/lang/tr_openvz_vm.lng b/interface/web/vm/lib/lang/tr_openvz_vm.lng
index f2be022..37066b4 100644
--- a/interface/web/vm/lib/lang/tr_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/tr_openvz_vm.lng
@@ -37,4 +37,5 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Advanced';
+$wb['features_txt'] = 'Features';
 ?>
diff --git a/interface/web/vm/templates/openvz.conf.tpl b/interface/web/vm/templates/openvz.conf.tpl
index 5bdd385..49ead3c 100644
--- a/interface/web/vm/templates/openvz.conf.tpl
+++ b/interface/web/vm/templates/openvz.conf.tpl
@@ -48,3 +48,4 @@
 # SWAPPAGES="{tmpl_var name='swappages'}"
 
 CAPABILITY="{tmpl_var name='capability'}"
+FEATURES="{tmpl_var name='features'}"
diff --git a/interface/web/vm/templates/openvz_template_advanced_edit.htm b/interface/web/vm/templates/openvz_template_advanced_edit.htm
index 8146c29..b8f3421 100644
--- a/interface/web/vm/templates/openvz_template_advanced_edit.htm
+++ b/interface/web/vm/templates/openvz_template_advanced_edit.htm
@@ -74,6 +74,9 @@
             <div class="form-group">
                 <label for="capability" class="col-sm-3 control-label">{tmpl_var name='capability_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="capability" id="capability" value="{tmpl_var name='capability'}" class="form-control" /></div></div>
+            <div class="form-group">
+                <label for="capability" class="col-sm-3 control-label">{tmpl_var name='features_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="features" id="features" value="{tmpl_var name='features'}" class="form-control" /></div></div>
         
             
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
@@ -81,4 +84,4 @@
         <div class="clear"><div class="right">
             <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="vm/openvz_template_edit.php">{tmpl_var name='btn_save_txt'}</button>
             <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="vm/openvz_template_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/interface/web/vm/templates/openvz_vm_advanced_edit.htm b/interface/web/vm/templates/openvz_vm_advanced_edit.htm
index 70d01ca..f2bc68a 100644
--- a/interface/web/vm/templates/openvz_vm_advanced_edit.htm
+++ b/interface/web/vm/templates/openvz_vm_advanced_edit.htm
@@ -48,7 +48,12 @@
             </div></div>
             <div class="form-group">
                 <label for="capability" class="col-sm-3 control-label">{tmpl_var name='capability_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="capability" id="capability" value="{tmpl_var name='capability'}" class="form-control" /></div></div>
+                <div class="col-sm-9"><input type="text" name="capability" id="capability" value="{tmpl_var name='capability'}" class="form-control" />
+			</div></div>
+            <div class="form-group">
+                <label for="features" class="col-sm-3 control-label">{tmpl_var name='features_txt'}</label>
+                <div class="col-sm-9"><input type="text" name="features" id="features" value="{tmpl_var name='features'}" class="form-control" />
+			</div></div>
         
             
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
@@ -56,4 +61,4 @@
         <div class="clear"><div class="right">
             <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="vm/openvz_vm_edit.php">{tmpl_var name='btn_save_txt'}</button>
             <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="vm/openvz_vm_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>

--
Gitblit v1.9.1