Subversion-Projekte lars-tiefland.openvz_admin

Revision

Revision 131 | Revision 136 | Zur aktuellen Revision | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
3 lars 1
<?php
9 lars 2
	//$Id: load.php 132 2008-05-22 15:37:07Z lars $
109 lars 3
	/**
4
	 * 	@package	openvz_admin
5
	 * 	@author		Lars Tiefland <ltiefland@gmail.com>
6
	 **/
113 lars 7
	require ("include/common.php");
8
	$hns = HN::getHNs();
100 lars 9
	unset($hns[-1]);
113 lars 10
	foreach ($hns as $hn_id => $hn_name)
3 lars 11
	{
122 lars 12
		$configs = load_configs($hn_id, $hn_name);
13
		foreach ($configs as $conf_id => $config)
114 lars 14
		{
122 lars 15
			$cfg = read_config($hn_id, $hn_name, $config);
126 lars 16
			update_db($hn_id, $cfg);
114 lars 17
		}
18
	}
122 lars 19
 
20
	function load_configs($hn_id, $hn_name)
114 lars 21
	{
115 lars 22
		unset($out);
113 lars 23
		$cmd = "ssh root@$hn_name ls /etc/vz/conf/*.conf";
61 lars 24
		exec($cmd, $out, $ret);
114 lars 25
		return $out;
26
	}
122 lars 27
 
121 lars 28
	function read_config($hn_id, $hn_name, $config)
114 lars 29
	{
129 lars 30
		$config = basename($config);
31
		$cmd = "scp root@$hn_name:/etc/vz/conf/$config cfgs/$hn_id";
122 lars 32
		exec($cmd, $out, $ret);
130 lars 33
		$conf = file("cfgs/$hn_id/$config");
129 lars 34
		$conf[] = "v_id=\"" . substr($config, 0, strpos($config, '.')) . "\"";
127 lars 35
		foreach ($conf as $value)
36
		{
37
			if ($value)
38
			{
39
				$value = rtrim($value);
40
				if ($value[0] == " " || $value[0] == "#")
41
				{
42
					continue;
43
				}
44
				$cfg_v = explode("=", $value);
45
				$cfg_val[$cfg_v[0]] = trim($cfg_v[1], '"');
46
			}
47
			else
48
			{
49
				continue;
50
			}
51
		}
131 lars 52
		$cfgs[] = $cfg_val;
127 lars 53
		return $cfgs;
114 lars 54
	}
122 lars 55
 
123 lars 56
	function update_db($hn_id, $cfgs)
122 lars 57
	{
124 lars 58
		global $db;
125 lars 59
 
122 lars 60
		foreach ($cfgs as $config)
3 lars 61
		{
125 lars 62
			if (isset($config["DISTRIBUTION"]))
3 lars 63
			{
125 lars 64
				$sql = "SELECT * FROM distributions WHERE dist_name='" . $config["DISTRIBUTION"] .
65
					"'";
66
				$res = $db->query($sql);
67
				if (!PEAR::isError($res))
3 lars 68
				{
125 lars 69
					if ($res->numRows())
70
					{
71
						$row = $res->fetchRow();
72
						$dist_id = $row["dist_id"];
73
					}
74
					else
75
					{
76
						$sql = "INSERT INTO distributions (dist_name, dist_template) VALUES('" . $config["DISTRIBUTION"] .
77
							"', '" . $config["OSTEMPLATE"] . "')";
78
						$res = $db->query($sql);
126 lars 79
						$dist_id = $db->lastinsertID();
125 lars 80
					}
122 lars 81
				}
82
				else
83
				{
125 lars 84
					die($res->getUserInfo());
122 lars 85
				}
125 lars 86
			}
87
			$sql = "SELECT * FROM vservers WHERE v_id=" . $config["v_id"] . " AND hn_id=$hn_id";
88
			$res = $db->query($sql);
89
			if (!PEAR::isError($res))
90
			{
91
				if (!$res->numRows())
122 lars 92
				{
125 lars 93
					$sql = "INSERT INTO vservers (v_id, v_name, v_dist, hn_id) VALUES (" . $config["v_id"] .
94
						", '" . $config["HOSTNAME"] . "', $dist_id, $hn_id)";
95
					$res = $db->query($sql);
96
					if (PEAR::isError($res))
3 lars 97
					{
125 lars 98
						echo $res->getUserInfo();
3 lars 99
					}
100
				}
125 lars 101
			}
102
			else
103
			{
104
				die($res->getUserInfo());
105
			}
106
			foreach ($config as $field => $value)
107
			{
108
				$sql = "SELECT * FROM vserver_config WHERE vc_name='$field' AND v_id=" . $config["v_id"] .
109
					" AND hn_id=$hn_id";
110
				$res = $db->query($sql);
111
				if (!PEAR::isError($res))
100 lars 112
				{
125 lars 113
					if ($res->numRows())
100 lars 114
					{
125 lars 115
						$sql = "UPDATE vserver_config SET vc_value='$value' WHERE vc_name='$field' AND v_id=" .
116
							$config["v_id"] . " AND hn_id=$hn_id";
100 lars 117
					}
118
					else
119
					{
125 lars 120
						$sql = "INSERT INTO vserver_config VALUES (" . $config["v_id"] . ", $hn_id, '$field', '$value')";
121
					}
122
					$res = $db->query($sql);
123
					if (PEAR::isError($res))
124
					{
100 lars 125
						echo $res->getUserInfo();
126
					}
127
				}
125 lars 128
				else
129
				{
130
					echo $res->getUserInfo();
131
				}
100 lars 132
			}
3 lars 133
		}
122 lars 134
	}
132 lars 135
?>