1 |
<? |
<? |
|
include('include/dbconn.php'); |
|
|
include('include/basesql.php'); |
|
2 |
|
|
3 |
echo '<table width=100% height=100% style="border:solid black 1px; background-color:#d5e5ff"><tr><td valign=middle align=center>'; |
include('include/dbconn.php'); |
4 |
|
include('include/basesql.php'); |
5 |
|
include('include/common-functions.php'); |
6 |
|
|
7 |
|
echo '<table width=100% height=100% style="border:solid black 1px; background-color:#d5e5ff"><tr><td valign=middle align=center>'; |
8 |
|
|
9 |
?> |
?> |
|
<style type="text/css"> |
|
|
div.left { margin-left:20%; } |
|
|
</style> |
|
|
<? |
|
|
function editvar($var, $value, $file) |
|
|
{ |
|
|
global $ip; |
|
|
global $sshcmd; |
|
10 |
|
|
11 |
// sed cmd: ssh -l root 10.11.12.13 'sed -i -e "s|^\(VAR=\).*|\1\"VALUE\"| FILE' |
<style type="text/css"> |
12 |
$str = $sshcmd.' '.$ip.' \'sed -i -e "s|^\\('.$var.'=\\).*|\\1\\"'.$value.'\\"|" '.$file.'\''; |
div.left { margin-left:20%; } |
13 |
//echo $str.'<br>'; |
</style> |
|
system($str); |
|
|
} |
|
14 |
|
|
15 |
$pubkey = mysql_query('select public_key from ssh_auth_clients where serial='.$client.''); |
<? |
16 |
while ($row = mysql_fetch_row ($pubkey)) |
|
17 |
|
function update_client_settings() |
18 |
|
{ |
19 |
|
global $client; |
20 |
|
|
21 |
|
// set verbose off |
22 |
|
ssh_editvar('VERBOSE', 'off', '/etc/mage.rc'); |
23 |
|
|
24 |
|
// update rsync server location |
25 |
|
$rsync = sqlfirst('select client_locations.rsync from client_serials inner join client_locations on client_locations.location=client_serials.location and client_serials.serial='.$client, 'rsync'); |
26 |
|
ssh_editvar('MAGE_RSYNC', $rsync, '/etc/alxconfig-ng/config.rc'); |
27 |
|
ssh_editvar('RSYNC', $rsync, '/etc/mage.rc'); |
28 |
|
|
29 |
|
// update repository server location |
30 |
|
$repository = sqlfirst('select client_locations.repository from client_serials inner join client_locations on client_locations.location=client_serials.location and client_serials.serial='.$client, 'repository'); |
31 |
|
ssh_editvar('MAGE_MIRRORS', $repository, '/etc/alxconfig-ng/config.rc'); |
32 |
|
ssh_editvar('MIRRORS', $repository, '/etc/mage.rc'); |
33 |
|
|
34 |
|
// update samba update host |
35 |
|
$updateserver = sqlfirst('select client_locations.updateserver from client_serials inner join client_locations on client_locations.location=client_serials.location and client_serials.serial='.$client, 'updateserver'); |
36 |
|
ssh_editvar('SMB_UPDATE_HOST', $updateserver, '/etc/alxconfig-ng/config.rc'); |
37 |
|
|
38 |
|
// update samba update user |
39 |
|
$smbusername = sqlfirst('select client_locations.username from client_serials inner join client_locations on client_locations.location=client_serials.location and client_serials.serial='.$client, 'username'); |
40 |
|
ssh_editvar('SMB_UPDATE_USER', $smbusername, '/etc/alxconfig-ng/config.rc'); |
41 |
|
|
42 |
|
// update samba update password |
43 |
|
$smbpassword = sqlfirst('select client_locations.password from client_serials inner join client_locations on client_locations.location=client_serials.location and client_serials.serial='.$client, 'password'); |
44 |
|
ssh_editvar('SMB_UPDATE_PASS', $smbpassword, '/etc/alxconfig-ng/config.rc'); |
45 |
|
} |
46 |
|
|
47 |
|
// always update the client settings first |
48 |
|
update_client_settings(); |
49 |
|
|
50 |
|
if($op=="calc") |
51 |
|
{ |
52 |
|
echo '<img src="pics/online.gif" align=top> '.strtoupper('Fetching list of packages to upgrade on client #'.$client.' ('.$ip.')...<br>'); |
53 |
|
$out = sshdo('NOCOLORS=true /sbin/mage uppretend | egrep "\[.*\]" | sed "s:\[.*\]\ \(.*\):\1:" | sed "s:/:,:" | sed "s:\(.*\)-:\1,:" | sed "s:\(.*\)-:\1,:"', $ip); |
54 |
|
echo '<pre>'; |
55 |
|
echo '<table border="0">'; |
56 |
|
if (array_key_exists("0", $out[1])) |
57 |
{ |
{ |
58 |
# schreiben der .ssh/known_hosts file mit dem public rsa key des client, |
foreach( $out[1] as $i) |
|
# um die "yes" abfrage zu vermeiden |
|
|
$hostfile = fopen ($home."/.ssh/known_hosts","w"); |
|
|
fwrite($hostfile,$ip." ".$row[0],strlen($row[0])+strlen($ip)+1); |
|
|
fclose($hostfile); |
|
|
|
|
|
# reboot des clients |
|
|
passthru($pingcmd.' '.$ip.' &> /dev/null && exit 0 || exit 1',$retval); |
|
|
if($retval==0) |
|
59 |
{ |
{ |
60 |
if($op=="calc") |
$item=explode(",",$i); |
61 |
{ |
$pcat=$item[0]; |
62 |
echo '<img src="pics/online.gif" align=top> '.strtoupper('Fetching list of packages to upgrade on client #'.$client.' ('.$ip.')...<br>'); |
$pname=$item[1]; |
63 |
exec($sshcmd.' '.$ip.' NOCOLORS=true /sbin/mage uppretend | egrep "\[.*\]" | sed "s:\[.*\]\ \(.*\):\1:" | sed "s:/:,:" | sed "s:\(.*\)-:\1,:" | sed "s:\(.*\)-:\1,:"',$out,$err); |
$pver=$item[2]; |
64 |
echo '<pre>'; |
$pbuild=$item[3]; |
65 |
echo '<table border="0">'; |
|
66 |
if (array_key_exists("0", $out)) |
echo '<tr><td>'; |
67 |
{ |
echo '<font color=green>'.$pcat.'/'.$pname.'</font>'; |
68 |
foreach( $out as $i) |
echo '<td>'; |
69 |
{ |
echo '<font color=blue> => [ '.$pver.'-'.$pbuild.' ] </font>'; |
70 |
if(strstr($i,"Magellan") |
echo '</td>'; |
71 |
{ |
echo '</td></tr>'; |
|
continue; |
|
|
} |
|
|
if(strstr($i,"dependencies") |
|
|
{ |
|
|
continue; |
|
|
} |
|
|
$item=explode(",",$i); |
|
|
$pcat=$item[0]; |
|
|
$pname=$item[1]; |
|
|
$pver=$item[2]; |
|
|
$pbuild=$item[3]; |
|
|
|
|
|
echo '<tr><td>'; |
|
|
echo '<font color=green>'.$pcat.'/'.$pname.'</font>'; |
|
|
echo '<td>'; |
|
|
echo '<font color=blue> => [ '.$pver.'-'.$pbuild.' ] </font>'; |
|
|
echo '</td>'; |
|
|
echo '</td></tr>'; |
|
|
} |
|
|
} |
|
|
else echo 'No updates for client '.$client.' available.'; |
|
|
echo '</table>'; |
|
|
echo '</pre>'; |
|
|
} |
|
|
elseif($op=="update") |
|
|
{ |
|
|
echo '<img src="pics/online.gif" align=top> '.strtoupper('Fetching new mage database for client #'.$client.' ('.$ip.')...<br>'); |
|
|
echo '<br>'; |
|
|
echo '<pre><div align=left class=left>'; |
|
|
editvar("VERBOSE","off","/etc/mage.rc"); |
|
|
|
|
|
// update rsync server location |
|
|
$rsync = sqlfirst('select client_locations.rsync from client_serials inner join client_locations on client_locations.location=client_serials.location and client_serials.serial='.$client, 'client_locations.rsync'); |
|
|
editvar("MAGE_RSYNC",$rsync,"/etc/alxconfig-ng/config.rc"); |
|
|
editvar("RSYNC",$rsync,"/etc/mage.rc"); |
|
|
|
|
|
// update repository server location |
|
|
$repository = sqlfirst('select client_locations.repository from client_serials inner join client_locations on client_locations.location=client_serials.location and client_serials.serial='.$client, 'repository'); |
|
|
editvar("MAGE_MIRRORS",$repository,"/etc/alxconfig-ng/config.rc"); |
|
|
editvar("MIRRORS",$repository,"/etc/mage.rc"); |
|
|
|
|
|
// update samba update host |
|
|
$updateserver = sqlfirst('select client_locations.updateserver from client_serials inner join client_locations on client_locations.location=client_serials.location and client_serials.serial='.$client, 'updateserver'); |
|
|
editvar("SMB_UPDATE_HOST",$updateserver,"/etc/alxconfig-ng/config.rc"); |
|
|
|
|
|
// update samba update user |
|
|
$smbusername = sqlfirst('select client_locations.username from client_serials inner join client_locations on client_locations.location=client_serials.location and client_serials.serial='.$client, 'username'); |
|
|
editvar("SMB_UPDATE_USER",$smbusername,"/etc/alxconfig-ng/config.rc"); |
|
|
|
|
|
// update samba update password |
|
|
$smbpassword = sqlfirst('select client_locations.password from client_serials inner join client_locations on client_locations.location=client_serials.location and client_serials.serial='.$client, 'password'); |
|
|
editvar("SMB_UPDATE_PASS",$smbpassword,"/etc/alxconfig-ng/config.rc"); |
|
|
system($sshcmd.' '.$ip.' "NOCOLORS=true /sbin/mage update"'); |
|
|
|
|
|
echo '</div></pre>'; |
|
|
echo '<script language="JavaScript">alert(\'Database-update successfully completed on client #'.$client.' .\')</script>'; |
|
|
} |
|
|
elseif($op=="upgrade") |
|
|
{ |
|
|
echo '<img src="pics/online.gif" align=top> '.strtoupper('Running update-alx on client #'.$client.' ('.$ip.')...<br>'); |
|
|
echo '<br>'; |
|
|
echo '<pre><div align=left class=left>'; |
|
|
editvar("VERBOSE","off","/etc/mage.rc"); |
|
|
|
|
|
// update rsync server location |
|
|
$rsync = sqlfirst('select client_locations.rsync from client_serials inner join client_locations on client_locations.location=client_serials.location and client_serials.serial='.$client, 'rsync'); |
|
|
editvar("MAGE_RSYNC",$rsync,"/etc/alxconfig-ng/config.rc"); |
|
|
editvar("RSYNC",$rsync,"/etc/mage.rc"); |
|
|
|
|
|
// update repository server location |
|
|
$repository = sqlfirst('select client_locations.repository from client_serials inner join client_locations on client_locations.location=client_serials.location and client_serials.serial='.$client, 'repository'); |
|
|
editvar("MAGE_MIRRORS",$repository,"/etc/alxconfig-ng/config.rc"); |
|
|
editvar("MIRRORS",$repository,"/etc/mage.rc"); |
|
|
|
|
|
// update samba update host |
|
|
$updateserver = sqlfirst('select client_locations.updateserver from client_serials inner join client_locations on client_locations.location=client_serials.location and client_serials.serial='.$client, 'updateserver'); |
|
|
editvar("SMB_UPDATE_HOST",$updateserver,"/etc/alxconfig-ng/config.rc"); |
|
|
|
|
|
// update samba update user |
|
|
$smbusername = sqlfirst('select client_locations.username from client_serials inner join client_locations on client_locations.location=client_serials.location and client_serials.serial='.$client, 'username'); |
|
|
editvar("SMB_UPDATE_USER",$smbusername,"/etc/alxconfig-ng/config.rc"); |
|
|
|
|
|
// update samba update password |
|
|
$smbpassword = sqlfirst('select client_locations.password from client_serials inner join client_locations on client_locations.location=client_serials.location and client_serials.serial='.$client, 'password'); |
|
|
editvar("SMB_UPDATE_PASS",$smbpassword,"/etc/alxconfig-ng/config.rc"); |
|
|
|
|
|
|
|
|
# check if /usr/sbin/update-alx exists, if not update mage-alx and alxconfig-alx first |
|
|
exec($sshcmd.' '.$ip.' "[ -x /usr/sbin/update-alx ] && exit 0 || exit 1"',$outarr,$err); |
|
|
if($err!=0) |
|
|
{ |
|
|
echo '"update-alx" missing on client "'.$client.'". Updating mage and alxconfig-ng first ...<br>'; |
|
|
system($sshcmd.' '.$ip.' "NOCOLORS=true mage install mage"'); |
|
|
system($sshcmd.' '.$ip.' "NOCOLORS=true mage install alxconfig-ng"'); |
|
|
} |
|
|
exec($sshcmd.' '.$ip.' "NOCOLORS=true /usr/sbin/update-alx && exit 0 || exit 1"',$outarr,$err); |
|
|
echo '</div></pre>'; |
|
|
if ($err!=0) echo '<script language="JavaScript">alert(\'Upgrade *failed* on client #'.$client.' .\')</script>'; |
|
|
else echo '<script language="JavaScript">alert(\'Upgrade successfully installed on client #'.$client.' .\')</script>'; |
|
|
} |
|
|
else echo 'unkown operation'; |
|
72 |
} |
} |
|
|
|
|
else echo '<img src="pics/offline.gif" align=top> '.strtoupper('Client not online, try again later...<br>'); |
|
73 |
} |
} |
74 |
echo '</td></tr></table>'; |
else echo 'No updates for client '.$client.' available.'; |
75 |
|
echo '</table>'; |
76 |
|
echo '</pre>'; |
77 |
|
} |
78 |
|
elseif($op=="update") |
79 |
|
{ |
80 |
|
echo '<img src="pics/online.gif" align=top> '.strtoupper('Fetching new mage database for client #'.$client.' ('.$ip.')...<br>'); |
81 |
|
echo '<br>'; |
82 |
|
echo '<pre><div align=left class=left>'; |
83 |
|
|
84 |
|
sshdo('NOCOLORS=true /sbin/mage update', $ip); |
85 |
|
|
86 |
|
echo '</div></pre>'; |
87 |
|
echo '<script language="JavaScript">alert(\'Database-update successfully completed on client #'.$client.' .\')</script>'; |
88 |
|
} |
89 |
|
elseif($op=="upgrade") |
90 |
|
{ |
91 |
|
echo '<img src="pics/online.gif" align=top> '.strtoupper('Running update-alx on client #'.$client.' ('.$ip.')...<br>'); |
92 |
|
echo '<br>'; |
93 |
|
echo '<pre><div align=left class=left>'; |
94 |
|
|
95 |
|
# check if /usr/sbin/update-alx exists, if not update mage-alx and alxconfig-alx first |
96 |
|
$err = sshdo('[ -x /usr/sbin/update-alx ]', $ip); |
97 |
|
if($err[0]!=0) |
98 |
|
{ |
99 |
|
echo '"update-alx" missing on client "'.$client.'". Updating mage and alxconfig-ng first ...<br>'; |
100 |
|
sshdo('NOCOLORS=true mage install mage', $ip); |
101 |
|
sshdo('NOCOLORS=true mage install alxconfig-ng', $ip); |
102 |
|
} |
103 |
|
$err = sshdo('NOCOLORS=true /usr/sbin/update-alx', $ip); |
104 |
|
if ($err[0]!=0) echo '<script language="JavaScript">alert(\'Upgrade *failed* on client #'.$client.' .\')</script>'; |
105 |
|
else echo '<script language="JavaScript">alert(\'Upgrade successfully installed on client #'.$client.' .\')</script>'; |
106 |
|
echo '</div></pre>'; |
107 |
|
} |
108 |
|
else echo 'unkown operation'; |
109 |
|
echo '</td></tr></table>'; |
110 |
|
|
111 |
?> |
?> |