Magellan Linux

Diff of /alx-src/trunk/alx-web/mageupgrade.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.424  
changed lines
  Added in v.425