Magellan Linux

Annotation of /alx-src/branches/alx-web-060/mageupgrade.php

Parent Directory Parent Directory | Revision Log Revision Log


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

Properties

Name Value
svn:executable *