From 4569cae57f127afd093794310ccd290d2d9fdf36 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Wed, 20 Apr 2016 10:58:46 -0400
Subject: [PATCH] Merge branch 'stable-3.1'

---
 interface/lib/plugins/vm_openvz_plugin.inc.php |   52 +++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 43 insertions(+), 9 deletions(-)

diff --git a/interface/lib/plugins/vm_openvz_plugin.inc.php b/interface/lib/plugins/vm_openvz_plugin.inc.php
index 73cc9cd..281fae4 100644
--- a/interface/lib/plugins/vm_openvz_plugin.inc.php
+++ b/interface/lib/plugins/vm_openvz_plugin.inc.php
@@ -60,6 +60,14 @@
 		// Set the IP address
 		$app->db->query("UPDATE openvz_ip SET vm_id = ? WHERE ip_address = ?", $this->id, $this->dataRecord['ip_address']);
 
+		// Set additional IPs
+		if (isset($this->dataRecord['additional_ip'])) {
+			$app->db->query("UPDATE openvz_ip SET vm_id = 0, additional = 'n' WHERE vm_id = ? AND additional='y'", $this->id);
+			foreach ($this->dataRecord['additional_ip'] as $idx => $rec) {
+				$app->db->query("UPDATE openvz_ip SET vm_id = ?, additional = 'y' WHERE ip_address = ?", $this->id, $rec);
+			}
+		}
+
 		// Create the OpenVZ config file and store it in config field
 		$this->makeOpenVZConfig();
 
@@ -94,7 +102,18 @@
 		}
 
 		// Set the IP address
-		if(isset($this->dataRecord['ip_address'])) $app->db->query("UPDATE openvz_ip SET vm_id = ? WHERE ip_address = ?", $this->id, $this->dataRecord['ip_address']);
+		if(isset($this->dataRecord['ip_address'])) {
+			$app->db->query("UPDATE openvz_ip SET vm_id = 0 WHERE vm_id = ? AND additional='n'", $this->id);
+			$app->db->query("UPDATE openvz_ip SET vm_id = ?, additional = 'n' WHERE ip_address = ?", $this->id, $this->dataRecord['ip_address']);
+		}
+
+		// Set additional IPs
+		if (isset($this->dataRecord['additional_ip'])) {
+			$app->db->query("UPDATE openvz_ip SET vm_id = 0, additional = 'n' WHERE (vm_id = ? AND additional='y')", $this->id);
+			foreach ($this->dataRecord['additional_ip'] as $idx => $rec) {
+				$app->db->query("UPDATE openvz_ip SET vm_id = ?, additional = 'y' WHERE ip_address = ?", $this->id, $rec);
+			}
+		}
 
 		// Create the OpenVZ config file and store it in config field
 		$this->makeOpenVZConfig();
@@ -111,10 +130,10 @@
 		global $app, $conf;
 
 		//* Free the IP address
-		$tmp = $app->db->queryOneRecord("SELECT ip_address_id FROM openvz_ip WHERE vm_id = ?", $page_form->id);
-		$app->db->datalogUpdate('openvz_ip', array('vm_id' => 0), 'ip_address_id', $tmp['ip_address_id']);
-		unset($tmp);
-
+		$tmp_rec = $app->db->queryAllRecords("SELECT ip_address_id FROM openvz_ip WHERE vm_id = ?", $page_form->id);
+		foreach ($tmp_rec as $tmp) {
+			$app->db->datalogUpdate('openvz_ip', array('vm_id' => 0), 'ip_address_id', $tmp['ip_address_id']);
+		}
 	}
 
 	private function applyTemplate() {
@@ -135,8 +154,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);
 
 	}
 
@@ -155,13 +175,14 @@
 		$onboot = ($vm['start_boot'] == 'y')?'yes':'no';
 		$tpl->setVar('onboot', $onboot);
 
+		$tpl->setVar('bootorder', $vm['bootorder']);
 		$tpl->setVar('kmemsize', $vm_template['kmemsize']);
 		$tpl->setVar('lockedpages', $vm_template['lockedpages']);
-		$tpl->setVar('privvmpages', $burst_ram.':'.$burst_ram);
+		$tpl->setVar('privvmpages', $burst_ram.':'.$burst_ram*1.0625);
 		$tpl->setVar('shmpages', $guar_ram.':'.$guar_ram);
 		$tpl->setVar('numproc', $vm_template['numproc']);
 		$tpl->setVar('physpages', $vm_template['physpages']);
-		$tpl->setVar('vmguarpages', $guar_ram.':'.$guar_ram);
+		$tpl->setVar('vmguarpages', $guar_ram.':unlimited');
 		$tpl->setVar('oomguarpages', $guar_ram.':'.$guar_ram);
 		$tpl->setVar('numtcpsock', $vm_template['numtcpsock']);
 		$tpl->setVar('numflock', $vm_template['numflock']);
@@ -192,11 +213,24 @@
 		$hostname = str_replace('{VEID}', $vm['veid'], $vm['hostname']);
 
 		$tpl->setVar('hostname', $hostname);
+
+		$additional_ips = $app->db->queryAllRecords("SELECT * FROM openvz_ip WHERE vm_id = ?",$this->id);
+		if (isset($additional_ips)) {
+			$vm['ip_address']='';
+			foreach ($additional_ips as $ip) {
+				$vm['ip_address'] .= " ".$ip['ip_address'];
+			}
+			$vm['ip_address'] = substr($vm['ip_address'],1);
+		}
+		$tpl->setVar('ip_address', $vm['ip_address']);
+
 		$tpl->setVar('ip_address', $vm['ip_address']);
 		$tpl->setVar('nameserver', $vm['nameserver']);
 		$tpl->setVar('capability', $vm['capability']);
 		$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']);
@@ -249,7 +283,7 @@
 					"server_id" => $server_id,
 					"zone" => $dns_soa_id,
 					"name" => $hostname,
-					"type" => 'A',
+					"type" => @(preg_match("/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/", $ip_address))?'A':'AAAA',
 					"data" => $ip_address,
 					"aux" => '0',
 					"ttl" => '3600',

--
Gitblit v1.9.1