Subversion-Projekte lars-tiefland.openvz_admin

Revision

Revision 154 | Revision 157 | 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 155 2009-06-21 13:34:11Z lars $
109 lars 3
	/**
4
	 * 	@package	openvz_admin
5
	 * 	@author		Lars Tiefland <ltiefland@gmail.com>
6
	 **/
113 lars 7
	require ("include/common.php");
138 lars 8
	$hns = HN::getHNs();
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);
151 lars 23
		$cmd = "ping $hn_name -w1";
61 lars 24
		exec($cmd, $out, $ret);
151 lars 25
		if(!$ret)
26
		{
27
			echo "Hole Konfigurationen von $hn_name\n";
28
			unset( $out );
29
			$cmd = "ssh root@$hn_name ls /etc/vz/conf/*.conf";
30
			exec($cmd, $out, $ret);
31
			return $out;
32
		}
114 lars 33
	}
122 lars 34
 
121 lars 35
	function read_config($hn_id, $hn_name, $config)
114 lars 36
	{
129 lars 37
		$config = basename($config);
38
		$cmd = "scp root@$hn_name:/etc/vz/conf/$config cfgs/$hn_id";
122 lars 39
		exec($cmd, $out, $ret);
130 lars 40
		$conf = file("cfgs/$hn_id/$config");
129 lars 41
		$conf[] = "v_id=\"" . substr($config, 0, strpos($config, '.')) . "\"";
127 lars 42
		foreach ($conf as $value)
43
		{
44
			if ($value)
45
			{
46
				$value = rtrim($value);
47
				if ($value[0] == " " || $value[0] == "#")
48
				{
49
					continue;
50
				}
51
				$cfg_v = explode("=", $value);
52
				$cfg_val[$cfg_v[0]] = trim($cfg_v[1], '"');
53
			}
54
			else
55
			{
56
				continue;
57
			}
58
		}
131 lars 59
		$cfgs[] = $cfg_val;
127 lars 60
		return $cfgs;
114 lars 61
	}
122 lars 62
 
123 lars 63
	function update_db($hn_id, $cfgs)
122 lars 64
	{
124 lars 65
		global $db;
125 lars 66
 
122 lars 67
		foreach ($cfgs as $config)
3 lars 68
		{
125 lars 69
			if (isset($config["DISTRIBUTION"]))
3 lars 70
			{
151 lars 71
				$dist_name=$config["DISTRIBUTION"];
72
			}
155 lars 73
			elseif(in_array($hn_id,array(1,3)))
74
			{
75
				$dist_name="gentoo";
76
			}
151 lars 77
			else
78
			{
79
				$dist_name="centos";
80
			}
154 lars 81
				$sql = "SELECT * FROM distributions WHERE dist_name='$dist_name'";
125 lars 82
				$res = $db->query($sql);
83
				if (!PEAR::isError($res))
3 lars 84
				{
125 lars 85
					if ($res->numRows())
86
					{
87
						$row = $res->fetchRow();
88
						$dist_id = $row["dist_id"];
136 lars 89
						$sql_v="SELECT v_dist, dist_name FROM distributions, vservers WHERE dist_id=v_dist AND v_id=".$config["v_id"];
90
						$res_v=$db->query($sql_v);
91
						if(PEAR::isError($res_v))
92
						{
93
							die($res_v->getUserInfo());
94
						}
95
						$row_v=$res_v->fetchRow();
96
						$dist_name = $row_v["dist_name"];
97
						if ($dist_name != $config["DISTRIBUTION"])
98
						{
99
							$sql="UPDATE vservers SET v_dist=$dist_id WHERE v_id=".$config["v_id"];
100
							$res=$db->query($sql);
101
							if(PEAR::isError($res))
102
							{
103
								die($res->getUserInfo());
104
							}
105
						}
125 lars 106
					}
107
					else
108
					{
109
						$sql = "INSERT INTO distributions (dist_name, dist_template) VALUES('" . $config["DISTRIBUTION"] .
110
							"', '" . $config["OSTEMPLATE"] . "')";
111
						$res = $db->query($sql);
126 lars 112
						$dist_id = $db->lastinsertID();
125 lars 113
					}
122 lars 114
				}
115
				else
116
				{
125 lars 117
					die($res->getUserInfo());
122 lars 118
				}
125 lars 119
			$sql = "SELECT * FROM vservers WHERE v_id=" . $config["v_id"] . " AND hn_id=$hn_id";
120
			$res = $db->query($sql);
121
			if (!PEAR::isError($res))
122
			{
123
				if (!$res->numRows())
122 lars 124
				{
125 lars 125
					$sql = "INSERT INTO vservers (v_id, v_name, v_dist, hn_id) VALUES (" . $config["v_id"] .
126
						", '" . $config["HOSTNAME"] . "', $dist_id, $hn_id)";
127
					$res = $db->query($sql);
128
					if (PEAR::isError($res))
3 lars 129
					{
125 lars 130
						echo $res->getUserInfo();
3 lars 131
					}
132
				}
155 lars 133
				elseif($config["HOSTNAME"])
134
				{
135
					$sql = "UPDATE vservers SET v_name='" . $config["HOSTNAME"] . "' WHERE v_id=".$config["v_id"]." AND hn_id=$hn_id";
136
					$res = $db->query($sql);
137
					if (PEAR::isError($res))
138
					{
139
						echo $res->getUserInfo();
140
					}
141
				}
125 lars 142
			}
143
			else
144
			{
145
				die($res->getUserInfo());
146
			}
147
			foreach ($config as $field => $value)
148
			{
149
				$sql = "SELECT * FROM vserver_config WHERE vc_name='$field' AND v_id=" . $config["v_id"] .
150
					" AND hn_id=$hn_id";
151
				$res = $db->query($sql);
152
				if (!PEAR::isError($res))
100 lars 153
				{
125 lars 154
					if ($res->numRows())
100 lars 155
					{
125 lars 156
						$sql = "UPDATE vserver_config SET vc_value='$value' WHERE vc_name='$field' AND v_id=" .
157
							$config["v_id"] . " AND hn_id=$hn_id";
100 lars 158
					}
159
					else
160
					{
125 lars 161
						$sql = "INSERT INTO vserver_config VALUES (" . $config["v_id"] . ", $hn_id, '$field', '$value')";
162
					}
163
					$res = $db->query($sql);
164
					if (PEAR::isError($res))
165
					{
100 lars 166
						echo $res->getUserInfo();
167
					}
168
				}
125 lars 169
				else
170
				{
171
					echo $res->getUserInfo();
172
				}
100 lars 173
			}
3 lars 174
		}
122 lars 175
	}
136 lars 176
?>