Subversion-Projekte lars-tiefland.openvz_admin

Revision

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