Magellan Linux

Diff of /alx-src/branches/alx-web-070/mageupgrade.php

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

alx-src/branches/alx-web-050/mageupgrade.php revision 1600 by niro, Thu Dec 2 19:56:40 2010 UTC alx-src/branches/alx-web-060/mageupgrade.php revision 3349 by niro, Wed Feb 8 13:05:29 2012 UTC
# Line 1  Line 1 
1  <?  <?
2   include('include/config.inc.php');  
3   include('include/dbconn.php');  include('include/dbconn.php');
4   include('include/basesql.php');  include('include/basesql.php');
5    include('include/common-functions.php');
6   echo '<table width=100% height=100% style="border:solid black 1px; background-color:#d5e5ff"><tr><td valign=middle align=center>';  
7  ?>  echo '<table width=100% height=100% style="border:solid black 1px; background-color:#d5e5ff"><tr><td valign=middle align=center>';
8   <style type="text/css">  
9   div.left { margin-left:20%; }  ?>
10   </style>  
11  <?  <style type="text/css">
12   function editvar($var, $value, $file)   div.left { margin-left:20%; }
13   {  </style>
14   global $ip;  
15   global $sshcmd;  <?
16    
17   // sed cmd: ssh -l root 10.11.12.13 'sed -i -e "s|^\(VAR=\).*|\1\"VALUE\"| FILE'  function update_client_settings()
18   $str = $sshcmd.' -l root -o ConnectTimeout=5 '.$ip.' \'sed -i -e "s|^\\('.$var.'=\\).*|\\1\\"'.$value.'\\"|" '.$file.'\'';  {
19   //echo $str.'<br>';   global $client;
20   system($str);  
21   }   // set verbose off
22     ssh_editvar('VERBOSE', 'off', '/etc/mage.rc');
23   $pubkey = mysql_query('select public_key from ssh_auth_clients where serial='.$client.'');  
24   while ($row = mysql_fetch_row ($pubkey))   // 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   # schreiben der .ssh/known_hosts file mit dem public rsa key des client,   ssh_editvar('MAGE_RSYNC', $rsync, '/etc/alxconfig-ng/config.rc');
27   # um die "yes" abfrage zu vermeiden   ssh_editvar('RSYNC', $rsync, '/etc/mage.rc');
28   $hostfile = fopen ($home."/.ssh/known_hosts","w");  
29   fwrite($hostfile,$ip." ".$row[0],strlen($row[0])+strlen($ip)+1);   // update repository server location
30   fclose($hostfile);   $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   # reboot des clients   ssh_editvar('MIRRORS', $repository, '/etc/mage.rc');
33   passthru($pingcmd.' '.$ip.' &> /dev/null && exit 0 || exit 1',$retval);  
34   if($retval==0)   // 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   if($op=="calc")   ssh_editvar('SMB_UPDATE_HOST', $updateserver, '/etc/alxconfig-ng/config.rc');
37   {  
38   echo '<img src="pics/online.gif" align=top> '.strtoupper('Fetching list of packages to upgrade on client #'.$client.' ('.$ip.')...<br>');   // update samba update user
39   exec($sshcmd.' -l root -o ConnectTimeout=5 '.$ip.' /sbin/mageupgrade --calc-bash',$out,$err);   $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   echo '<pre>';   ssh_editvar('SMB_UPDATE_USER', $smbusername, '/etc/alxconfig-ng/config.rc');
41   echo '<table border="0">';  
42   if (array_key_exists("0", $out))   // 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   foreach( $out as $i)   ssh_editvar('SMB_UPDATE_PASS', $smbpassword, '/etc/alxconfig-ng/config.rc');
45   {  }
46   $item=explode(",",$i);  
47   $pcat=$item[0];  // get alx version info
48   $pname=$item[1];  $alxinfo = sqlfirst('SELECT * FROM client_version WHERE serial='.$client);
49   $opver=$item[2];  $alxos = $alxinfo[os];
50   $npver=$item[3];  $alxutils = $alxinfo[utils];
51    
52   echo '<tr><td>';  // always update the client settings first
53   echo '<font color=green>'.$pcat.'/'.$pname.'</font>';  update_client_settings();
54   echo '<td>';  
55   echo '<font color=blue> [ '.$opver.' -> '.$npver.' ] </font>';  if($op=="calc")
56   echo '</td>';  {
57   echo '</td></tr>';   echo '<img src="pics/online.gif" align=top> '.strtoupper('Fetching list of packages to upgrade on client #'.$client.' ('.$ip.')...<br>');
58   }  
59   }   if($alxos >= '0.6.0') {
60   else echo 'No updates for client '.$client.' available.';   $out = @sshdo('NOCOLORS=true /sbin/mage uppretend | egrep "\[.*\]" | sed "s:\[.*\]\ \(.*\):\1:" | sed "s:/:,:" | sed "s:\(.*\)-:\1,:" | sed "s:\(.*\)-:\1,:"', $ip);
61   echo '</table>';   }
62   echo '</pre>';   else {
63   }   $out = @sshdo('NOCOLORS=true /sbin/mageupgrade --calc-bash | cut -d, -f1-2,4 | sed "s/\(.*\)-r\(.*\)/\1,r\2/"', $ip);
64   elseif($op=="update")   }
65   {   echo '<pre>';
66   echo '<img src="pics/online.gif" align=top> '.strtoupper('Fetching new mage database for client #'.$client.' ('.$ip.')...<br>');   echo '<table border="0">';
67   echo '<br>';   if (array_key_exists("0", $out))
68   echo '<pre><div align=left class=left>';   {
69   // hotfix copy a fixed mage.rc   // tell that there are no updates if $out/$i is empty
70   system('scp /var/www/localhost/htdocs/alx/he/mage.rc root@'.$ip.':/etc/mage.rc');   if ( $out[1] == "")
71   // hotfix2 and a config.rc   {
72   system('scp /var/www/localhost/htdocs/alx/he/config.rc root@'.$ip.':/etc/alxconfig-ng/config.rc');   echo "No updates available. The system is fully upgraded.";
73   editvar("VERBOSE","off","/etc/mage.rc");   } else {
74     foreach( $out as $i)
75   // update rsync server location   {
76   $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');   // element 0 is always 0
77   echo $rsync;   if ($i=="0") continue;
78   editvar("MAGE_RSYNC",$rsync,"/etc/alxconfig-ng/config.rc");  
79   editvar("RSYNC",$rsync,"/etc/mage.rc");   $row=explode("\n", $i);
80     foreach( $row as $x)
81   system($sshcmd.' -l root -o ConnectTimeout=5 '.$ip.' "NOCOLORS=true /sbin/mage update"');   {
82   echo '</div></pre>';   //ignore empty rows
83   echo '<script language="JavaScript">alert(\'Database-update successfully completed on client #'.$client.' .\')</script>';   //(the last one may empty)
84   }   if ($x=="") continue;
85   elseif($op=="upgrade")  
86   {   $item=explode(",",trim($x));
87   echo '<img src="pics/online.gif" align=top> '.strtoupper('Running update-alx on client #'.$client.' ('.$ip.')...<br>');   $pcat=$item[0];
88   echo '<br>';   $pname=$item[1];
89   echo '<pre><div align=left class=left>';   $pver=$item[2];
90   #echo 'forcing verbose=off <br>';   $pbuild=$item[3];
91   // hotfix copy a fixed mage.rc  
92   system('scp /var/www/localhost/htdocs/alx/he/mage.rc root@'.$ip.':/etc/mage.rc');   echo '<tr><td>';
93   // hotfix2 and a config.rc   echo '<font color=green>'.$pcat.'/'.$pname.'</font>';
94   system('scp /var/www/localhost/htdocs/alx/he/config.rc root@'.$ip.':/etc/alxconfig-ng/config.rc');   echo '<td>';
95   editvar("VERBOSE","off","/etc/mage.rc");   echo '<font color=blue> => [ '.$pver.'-'.$pbuild.' ] </font>';
96     echo '</td>';
97   // update rsync server location   echo '</td></tr>';
98   $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');   }
99   editvar("MAGE_RSYNC",$rsync,"/etc/alxconfig-ng/config.rc");   }
100   editvar("RSYNC",$rsync,"/etc/mage.rc");   }
101     }
102   // update repository server location   else echo 'No updates for client '.$client.' available.';
103   $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');   echo '</table>';
104   editvar("MAGE_MIRRORS",$repository,"/etc/alxconfig-ng/config.rc");   echo '</pre>';
105   editvar("MIRRORS",$repository,"/etc/mage.rc");  }
106    elseif($op=="update")
107   // update samba update host  {
108   $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');   echo '<img src="pics/online.gif" align=top> '.strtoupper('Fetching new mage database for client #'.$client.' ('.$ip.')...<br>');
109   editvar("SMB_UPDATE_HOST",$updateserver,"/etc/alxconfig-ng/config.rc");   echo '<br>';
110     echo '<pre><div align=left class=left>';
111   // update samba update user  
112   $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');   @sshdo('NOCOLORS=true /sbin/mage update', $ip);
113   editvar("SMB_UPDATE_USER",$smbusername,"/etc/alxconfig-ng/config.rc");  
114     echo '</div></pre>';
115   // update samba update password   echo '<script language="JavaScript">alert(\'Database-update successfully completed on client #'.$client.' .\')</script>';
116   $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');  }
117   editvar("SMB_UPDATE_PASS",$smbpassword,"/etc/alxconfig-ng/config.rc");  elseif($op=="upgrade")
118    {
119     echo '<img src="pics/online.gif" align=top> '.strtoupper('Running update-alx on client #'.$client.' ('.$ip.')...<br>');
120   # check if /usr/sbin/update-alx exists, if not update mage-alx and alxconfig-alx first   echo '<br>';
121   exec($sshcmd.' -l root -o ConnectTimeout=5 '.$ip.' "[ -x /usr/sbin/update-alx ] && exit 0 || exit 1"',$outarr,$err);   echo '<pre><div align=left class=left>';
122   if($err!=0)  
123   {   # check if /usr/sbin/update-alx exists, if not update mage-alx and alxconfig-alx first
124   echo '"/usr/sbin/update-alx" missing on client "'.$client.'". Updating mage-alx and alxconfig-ng-alx first ...<br>';   $err = @sshdo('[ -x /usr/sbin/update-alx ]', $ip);
125   system($sshcmd.' -l root -o ConnectTimeout=5 '.$ip.' "NOCOLORS=true /sbin/mage install mage-alx"');   if($err[0]!=0)
126   system($sshcmd.' -l root -o ConnectTimeout=5 '.$ip.' "NOCOLORS=true /sbin/mage install alxconfig-ng-alx"');   {
127   }   echo '"update-alx" missing on client "'.$client.'". Updating mage and alxconfig-ng first ...<br>';
128   //system($sshcmd.' -l root -o ConnectTimeout=5 '.$ip.' "NOCOLORS=true /usr/sbin/update-alx"');   @sshdo('NOCOLORS=true mage install mage', $ip);
129   exec($sshcmd.' -l root -o ConnectTimeout=5 '.$ip.' "NOCOLORS=true /usr/sbin/update-alx && exit 0 || exit 1"',$outarr,$err);   @sshdo('NOCOLORS=true mage install alxconfig-ng', $ip);
130   echo '</div></pre>';   }
131   if ($err!=0) echo '<script language="JavaScript">alert(\'Upgrade *failed* on client #'.$client.' .\')</script>';   $err = @sshdo('NOCOLORS=true /usr/sbin/update-alx', $ip);
132   else echo '<script language="JavaScript">alert(\'Upgrade successfully installed on client #'.$client.' .\')</script>';   if ($err[0]!=0) echo '<script language="JavaScript">alert(\'Upgrade *failed* on client #'.$client.' .\')</script>';
133   }   else echo '<script language="JavaScript">alert(\'Upgrade successfully installed on client #'.$client.' .\')</script>';
134   else echo 'unkown operation';   echo '</div></pre>';
135   }  }
136    else echo 'unknown operation';
137   else echo '<img src="pics/offline.gif" align=top> '.strtoupper('Client not online, try again later...<br>');  echo '</td></tr></table>';
138   }  
139   echo '</td></tr></table>';  ?>
 ?>  

Legend:
Removed from v.1600  
changed lines
  Added in v.3349