Magellan Linux

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

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

revision 2636 by niro, Thu Jul 7 19:49:18 2011 UTC revision 4908 by niro, Wed May 29 06:44:21 2013 UTC
# Line 6  include('include/common-functions.php'); Line 6  include('include/common-functions.php');
6  // INCLUDE CURRENT-PROBLEMS  // INCLUDE CURRENT-PROBLEMS
7  include('include/current-problems.php');  include('include/current-problems.php');
8    
9  $tabs = array('cfg_graphic', 'cfg_network', 'cfg_input', 'client_auth', 'cfg_autostart', 'client_serials', 'cfg_comments', 'cfg_printers', 'cfg_sessions', 'cfg_modules', 'cfg_other_menuitems', 'cfg_screensaver', 'client_version');  $tabs = array('cfg_graphic', 'cfg_network', 'cfg_input', 'client_auth', 'cfg_autostart', 'client_serials', 'cfg_comments', 'cfg_printers', 'cfg_sessions', 'cfg_modules', 'cfg_other_menuitems', 'cfg_screensaver', 'client_version', 'cfg_plugins');
10  $multi= array(    0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0);  $multi= array(    0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1);
11  $data = array();  $data = array();
12    
13    
# Line 16  $alxinfo = sqlfirst('SELECT * FROM clien Line 16  $alxinfo = sqlfirst('SELECT * FROM clien
16  $alxos = $alxinfo[os];  $alxos = $alxinfo[os];
17  $alxutils = $alxinfo[utils];  $alxutils = $alxinfo[utils];
18    
19    // get gfxdriver
20    $gfxinfo = sqlfirst('SELECT * FROM cfg_graphic WHERE serial='.$id);
21    
22  if($kill==1)  if($kill==1)
23  {  {
24   foreach($tabs as $t) mysql_query('UPDATE '.$t.' SET serial=-serial WHERE serial='.$id);   foreach($tabs as $t) mysql_query('UPDATE '.$t.' SET serial=-serial WHERE serial='.$id);
# Line 32  if($kill==1) Line 35  if($kill==1)
35    
36  // FELD-DEFINITIONEN  (ARRAY=>DROPDOWN / HIDDEN / IGNORE / 1 / BOLD / PASSWORD / SHOW / SHOWTIME / MONITORID)  // FELD-DEFINITIONEN  (ARRAY=>DROPDOWN / HIDDEN / IGNORE / 1 / BOLD / PASSWORD / SHOW / SHOWTIME / MONITORID)
37  $drop = array();  $drop = array();
38  if($alxos >= '0.5.3')  if($alxos >= '0.6.0')
39    {
40     if($alxos >= '0.6.2')
41     {
42     $drop['cfg_graphic_module'] = array('vesa', 'ati', 'cirrus', 'i710', 'intel', 'nv', 'nouveau', 'mach64', 'mga', 'unichrome', 'radeon', 's3', 's3virge', 'savage', 'sis', 'trident', 'tseng', 'vmware');
43     }
44     else
45     {
46     $drop['cfg_graphic_module'] = array('vesa', 'ati', 'cirrus', 'i710', 'intel', 'nv', 'mach64', 'mga', 'openchrome', 'radeon', 's3', 's3virge', 'savage', 'sis', 'trident', 'tseng', 'vmware');
47     }
48     if($gfxinfo[module] == 'intel')
49     {
50     $drop['cfg_graphic_hdmi'] = array('disable', 'enable');
51     }
52     else
53     {
54     $drop['cfg_graphic_hdmi'] = 'ignore';
55     }
56    }
57    else if($alxos >= '0.5.3')
58  {  {
59   $drop['cfg_graphic_module'] = array('vesa', 'ati', 'cirrus', 'i710', 'intel', 'nv', 'mach64', 'mga', 'openchrome', 'radeon', 's3', 's3virge', 'savage', 'sis', 'trident', 'tseng');   $drop['cfg_graphic_module'] = array('vesa', 'ati', 'cirrus', 'i710', 'intel', 'nv', 'mach64', 'mga', 'openchrome', 'radeon', 's3', 's3virge', 'savage', 'sis', 'trident', 'tseng');
60     $drop['cfg_graphic_hdmi'] = 'ignore';
61  }  }
62  else  else
63  {  {
64   $drop['cfg_graphic_module'] = array('vesa', 'ati', 'cirrus', 'i810', 'i710', 'nv', 'mga', 'r128', 'radeon', 's3', 's3virge', 'savage', 'sis', 'trident', 'tseng', 'via');   $drop['cfg_graphic_module'] = array('vesa', 'ati', 'cirrus', 'i810', 'i710', 'nv', 'mga', 'r128', 'radeon', 's3', 's3virge', 'savage', 'sis', 'trident', 'tseng', 'via');
65     $drop['cfg_graphic_hdmi'] = 'ignore';
66  }  }
67  $drop['resolution'] = array('640x480', '800x600', '1024x768', '1280x960', '1280x1024', '1360x768', '1366x768', '1400x1050', '1440x900', '1600x1200', '1680x1050', '1280x720', '1920x1080');  $drop['resolution'] = array('640x480', '800x600', '1024x768', '1280x960', '1280x1024', '1360x768', '1366x768', '1400x1050', '1440x900', '1600x1200', '1680x1050', '1280x720', '1920x1080');
68  $drop['depth'] = array('24', '16', '8');  $drop['depth'] = array('24', '16', '8');
# Line 62  if($alxos>='0.6.0') Line 86  if($alxos>='0.6.0')
86  }  }
87  else  else
88  {  {
89   $drop['cfg_printers_port'] = array('lpt1', 'usb1', 'usb2', 'com1', 'com2', 'lpd', 'socket', 'ipp');   $drop['port'] = array('lpt1', 'usb1', 'usb2', 'com1', 'com2', 'lpd', 'socket', 'ipp');
90  }  }
91  $drop['location'] = sqlarr('SELECT location FROM client_locations', '', 'location');  $drop['location'] = sqlarr('SELECT location FROM client_locations', '', 'location');
92  $drop['id'] = 'hidden';  $drop['id'] = 'hidden';
# Line 82  $drop['hostname'] = 'bold'; Line 106  $drop['hostname'] = 'bold';
106  $drop['session'] = 'bold';  $drop['session'] = 'bold';
107  if($alxos>='0.6.0')  if($alxos>='0.6.0')
108  {  {
109   $drop['cfg_autostart_session'] = array('');   $drop['cfg_autostart_session'] = sqlarr('SELECT filename FROM cfg_sessions where serial='.$id, '', 'filename');
110   $drop['cfg_autostart_session'] += sqlarr('SELECT filename FROM cfg_sessions where serial='.$id, 'array', 'filename');   array_unshift($drop['cfg_autostart_session'], "");
111  }  }
112  else  else
113  {  {
# Line 122  $drop['wireless_frequency'] = array('', Line 146  $drop['wireless_frequency'] = array('',
146  $drop['wireless_key'] = 'password';  $drop['wireless_key'] = 'password';
147  $drop['wireless_key_ascii'] = 'password';  $drop['wireless_key_ascii'] = 'password';
148    
149    // plugin support
150    if($alxos>='0.6.0')
151    {
152     for ($i=0; $i<999; $i++) { $drop['cfg_plugins_'.$i.'_plugin'] = 'pluginconfig'; }
153     for ($i=0; $i<999; $i++)
154     {
155     if($alxos>'0.6.5')
156     $drop['cfg_plugins_'.$i.'_plugin_array'] = sqlarr('SELECT plugin FROM avail_plugins', '', 'plugin');
157     else
158     $drop['cfg_plugins_'.$i.'_plugin_array'] = sqlarr('SELECT plugin FROM avail_plugins where plugin<>"citrix_spe"', '', 'plugin');
159     array_unshift($drop['cfg_plugins_'.$i.'_plugin_array'], "");
160     }
161    }
162    else
163    {
164     for ($i=0; $i<999; $i++) { $drop['cfg_plugins_'.$i.'_id'] = 'ignore'; }
165     for ($i=0; $i<999; $i++) { $drop['cfg_plugins_'.$i.'_serial'] = 'ignore'; }
166     for ($i=0; $i<999; $i++) { $drop['cfg_plugins_'.$i.'_plugin'] = 'ignore'; }
167    }
168    
169  // get current citrix sessions  // get current citrix sessions
170  // split all citrix server into an array to get the first server from list  if($alxos>='0.6.0')
 $citrix_query_browser = split(";", $citrix_browseradrs);  
 exec($wwwroot.'/pnabrowse-wrapper -A '.$citrix_query_browser[0], $returned_citrix_sessions,$retval);  
 if ($retval == 0)  
171  {  {
172   $citrix_public_applications = str_replace("'", "", $returned_citrix_sessions);   // split all citrix server into an array to get the first server from list
173   for ($i=0; $i<999; $i++) { $drop['cfg_sessions_'.$i.'_session'] = $citrix_public_applications; }   $citrix_query_browser = split(";", $citrix_browseradrs);
174     exec($wwwroot.'/pnabrowse-wrapper -A '.$citrix_query_browser[0], $returned_citrix_sessions, $retval);
175     if ($retval == 0)
176     {
177     $citrix_public_applications = str_replace("'", "", $returned_citrix_sessions);
178     // add an empty value add the first position of the array as session-default
179     array_unshift($citrix_public_applications, "");
180     for ($i=0; $i<999; $i++) { $drop['cfg_sessions_'.$i.'_session'] = $citrix_public_applications; }
181     }
182     else
183     {
184     if($retval = 126) echo "pnabrowser-wrapper has no execute permission! please run chmod +x on ".$wwwroot."/pnabrowser-wrapper.";
185     else echo "pnabrowse-wrapper does not run successfully! retval->'".$retval."'<br>";
186     }
187  }  }
 else if($retval = 126) echo "pnabrowser-wrapper has no execute permission! please run chmod +x on ".$wwwroot."/pnabrowser-wrapper.";  
 else echo "pnabrowse-wrapper does not run successfully! retval->'".$retval."'<br>";  
188    
189  // GGF. NEUEN DATENSATZ EINFÜGEN  // GGF. NEUEN DATENSATZ EINFÜGEN
190  if(isset($_POST['do_add']))  if(isset($_POST['do_add']))
# Line 143  if(isset($_POST['do_add'])) Line 195  if(isset($_POST['do_add']))
195   else if($what=='MODULE') sqladd('cfg_modules', array('serial'=>$id));   else if($what=='MODULE') sqladd('cfg_modules', array('serial'=>$id));
196   else if($what=='SESSION') sqladd('cfg_sessions', array('domain'=>$citrix_domain_name, 'browseradrs'=>$citrix_browseradrs, 'serial'=>$id));   else if($what=='SESSION') sqladd('cfg_sessions', array('domain'=>$citrix_domain_name, 'browseradrs'=>$citrix_browseradrs, 'serial'=>$id));
197   else if($what=='MENUITEM') sqladd('cfg_other_menuitems', array('serial'=>$id));   else if($what=='MENUITEM') sqladd('cfg_other_menuitems', array('serial'=>$id));
198     else if($what=='PLUGIN') sqladd('cfg_plugins', array('serial'=>$id));
199  }  }
200    
201    
# Line 262  function parsearr($name, $arr, $del=fals Line 315  function parsearr($name, $arr, $del=fals
315   $v='openchrome';   $v='openchrome';
316   }   }
317   }   }
318     if($alxos >= '0.6.2')
319     {
320     if($v == 'via')
321     {
322     echo '<br><font color="#FF0000">Replaced "via" with "unichrome" - Please press SAVE!</font><br>';
323     $v='unichrome';
324     }
325     if($v == 'openchrome')
326     {
327     echo '<br><font color="#FF0000">Replaced "openchrome" with "unichrome" - Please press SAVE!</font><br>';
328     $v='unichrome';
329     }
330     }
331    
332   # tell something about vesa   # tell something about vesa
333   if ($v == 'vesa') echo '<br><font color="#FF0000">Warning: "vesa" graphic module doesn\'t support any resolutions higher than 1024x786x16@60hz!</font><br>';   if ($v == 'vesa') echo '<br><font color="#FF0000">Warning: "vesa" graphic module doesn\'t support any resolutions higher than 1024x786x16@60hz!</font><br>';
334    
# Line 276  function parsearr($name, $arr, $del=fals Line 342  function parsearr($name, $arr, $del=fals
342   else if($d=='hidden') echo '<tr><td colspan=2><input type=hidden name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';   else if($d=='hidden') echo '<tr><td colspan=2><input type=hidden name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';
343   else if($d=='1') echo '<tr><td colspan=2><input type=hidden name="'.$name.'_'.$k.'" value="1"></td></tr>';   else if($d=='1') echo '<tr><td colspan=2><input type=hidden name="'.$name.'_'.$k.'" value="1"></td></tr>';
344   else if($d=='monitorid') echo '<tr><td class="key">'.$k2.'</td><td>= <input type=button style="width:24px" onclick="window.open(\'monitor.php?id='.$id.'\', \'MonitorWin\', \'width=350,height=200\')" value="..."></td>';   else if($d=='monitorid') echo '<tr><td class="key">'.$k2.'</td><td>= <input type=button style="width:24px" onclick="window.open(\'monitor.php?id='.$id.'\', \'MonitorWin\', \'width=350,height=200\')" value="..."></td>';
345     else if($d=='pluginconfig')
346     {
347     $dplugin = $drop[$name.'_'.$k.'_array']; if($dplugin==null) $dplugin = $drop[$k];
348     if(is_array($dplugin))
349     {
350     echo '<tr><td class="key">'.$k2.'</td><td>= <select style="width:144px" name="'.$name.'_'.$k.'">';
351     foreach($dplugin as $di) if($v==$di) echo '<option selected>'.$di; else echo '<option>'.$di;
352     echo '</select></td></tr>';
353     }
354     // $v contains the pluginname, get the configure flag
355     $pflag = sqlfirst('SELECT configflag FROM avail_plugins WHERE plugin="'.$v.'"');
356     if ($pflag[configflag]==1) echo '<tr><td class="key">configure</td><td>= <input type=button style="width:24px" onclick="window.open(\'plugin.php?id='.$id.'&plugin='.$v.'\', \'PluginWin\', \'width=500,height=400\')" value="..."></td>';
357     }
358   else if($d=='bold') echo '<tr><td class="key">'.$k2.'</td><td>= <input style="width:144px;font-weight:bold" name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';   else if($d=='bold') echo '<tr><td class="key">'.$k2.'</td><td>= <input style="width:144px;font-weight:bold" name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';
359   else if($d=='filename') echo '<tr><td class="key">filename</td><td>= <input style="width:144px;font-weight:bold" name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';   else if($d=='filename') echo '<tr><td class="key">filename</td><td>= <input style="width:144px;font-weight:bold" name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';
360   else if($d=='show') echo '<tr><td class="key">'.$k2.'</td><td>= <b>'.$v.'</b></td></tr>';   else if($d=='show') echo '<tr><td class="key">'.$k2.'</td><td>= <b>'.$v.'</b></td></tr>';
361   else if($d=='showtime') echo '<tr><td class="key">'.$k2.'</td><td>= <b>'.date('d.m.y - H:i:s', $v).'</b></td></tr>';   else if($d=='showtime') echo '<tr><td class="key">'.$k2.'</td><td>= <b>'.date('d.m.y - H:i:s', $v).'</b></td></tr>';
362   else if($d=='password' && $v=='') echo '<tr><td class="key">'.$k2.'</td><td>= <input type=password style="width:144px" name="'.$name.'_'.$k.'" value=""></td></tr>';   else if($d=='password' && $v=='') echo '<tr><td class="key">'.$k2.'</td><td>= <input type=password style="width:144px" name="'.$name.'_'.$k.'" value=""></td></tr>';
363   else if($d=='password') echo '<tr><td class="key">'.$k2.'</td><td>= <input type=password style="width:144px" name="'.$name.'_'.$k.'" value="KEEPPASS"></td></tr>';   else if($d=='password') echo '<tr><td class="key">'.$k2.'</td><td>= <input type=password style="width:144px" name="'.$name.'_'.$k.'" value="KEEPPASS"></td></tr>';
364   else if($d=='txt') echo '<tr><td colspan=2><textarea style="width:240px; background-color:#d5e5ff" rows=4 name="'.$name.'_'.$k.'">'.$v.'</textarea></td></tr>';   else if($d=='txt') echo '<tr><td colspan=2><textarea style="width:240px; background-color:#d5e5ff" rows=6 name="'.$name.'_'.$k.'">'.$v.'</textarea></td></tr>';
365   else if($d!='ignore') echo '<tr><td class="key">'.$k2.'</td><td>= <input style="width:144px" name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';   else if($d!='ignore') echo '<tr><td class="key">'.$k2.'</td><td>= <input style="width:144px" name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';
366   }   }
367    
# Line 316  function parsearrs($name, $arr) Line 395  function parsearrs($name, $arr)
395   var $url = url.split("?");   var $url = url.split("?");
396   $.ajax({type:""+typ+"",url:$url[0],data:$url[1],cache:false,success:function(data){ alert(data); }});   $.ajax({type:""+typ+"",url:$url[0],data:$url[1],cache:false,success:function(data){ alert(data); }});
397   }   }
398     function plugin(name,id) { window.open('plugin.php?plugin='+name+'&id='+id, '', 'width=350,height=180'); }
399    
400  /* ignore this atm, not always working, sometime open does not work  /* ignore this atm, not always working, sometime open does not work
401   function openclose(nummer, act)   function openclose(nummer, act)
# Line 418  echo '</td><td valign=top>'; Line 498  echo '</td><td valign=top>';
498   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD PRINTER" style="width:150px"><br>';   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD PRINTER" style="width:150px"><br>';
499   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD SESSION" style="width:150px"><br>';   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD SESSION" style="width:150px"><br>';
500   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD MODULE" style="width:150px"><br>';   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD MODULE" style="width:150px"><br>';
501   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD MENUITEM" style="width:150px"><br><br>';   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD MENUITEM" style="width:150px"><br>';
502     if($alxos >= '0.6.0')
503     {
504     echo '<input class="but" type=submit name="do_add" value="INSTALL PLUGIN" style="width:150px"><br>';
505     }
506     echo '<br>';
507    
508   if($id>0) $KILLCAP='DEACTIVATE'; else $KILLCAP='ACTIVATE';   if($id>0) $KILLCAP='DEACTIVATE'; else $KILLCAP='ACTIVATE';
509   echo '<input class="but" type=button value="'.$KILLCAP.'" style="width:150px" onclick="if(confirm(\''.$KILLCAP.' CLIENT #'.abs($id).' ?\')) { window.open(\'show.php?id='.$id.'&kill=1\', \'DeactWin\', \'width=200,height=100\'); location.href=\'index.php\'; }"><br>';   echo '<input class="but" type=button value="'.$KILLCAP.'" style="width:150px" onclick="if(confirm(\''.$KILLCAP.' CLIENT #'.abs($id).' ?\')) { window.open(\'show.php?id='.$id.'&kill=1\', \'DeactWin\', \'width=200,height=100\'); location.href=\'index.php\'; }"><br>';
# Line 445  echo '</td><td valign=top>'; Line 529  echo '</td><td valign=top>';
529   echo '<u>IP:</u> '.$conn['ip'].'<br><br>';   echo '<u>IP:</u> '.$conn['ip'].'<br><br>';
530   if($alxos >= '0.6.0')   if($alxos >= '0.6.0')
531   {   {
532   $osver = sshdo('os_ver=$(</etc/mageversion);cfg_ver=$(/sbin/magequery -n alxconfig-ng | cut -d" " -f5);pname=${cfg_ver%-*-*};cfg_ver=${cfg_ver/${pname}-};echo "${os_ver}:${cfg_ver}"', $conn['ip']);   $osver = @sshdo('os_ver=$(</etc/mageversion);cfg_ver=$(/sbin/magequery -n alxconfig-ng | cut -d" " -f5);pname=${cfg_ver%-*-*};cfg_ver=${cfg_ver/${pname}-};echo "${os_ver}:${cfg_ver}"', $conn['ip']);
533   }   }
534   else   else
535   {   {
536   $osver = sshdo('os_ver=$(</etc/mageversion);cfg_ver=$(/sbin/magequery -n alxconfig-ng-alx | cut -d" " -f5);pname=${cfg_ver%-*-*};cfg_ver=${cfg_ver/${pname}-};echo "${os_ver}:${cfg_ver}"', $conn['ip']);   $osver = @sshdo('os_ver=$(</etc/mageversion);cfg_ver=$(/sbin/magequery -n alxconfig-ng-alx | cut -d" " -f5);pname=${cfg_ver%-*-*};cfg_ver=${cfg_ver/${pname}-};echo "${os_ver}:${cfg_ver}"', $conn['ip']);
537   }   }
538   $osver = explode(':',$osver[1]);   $osver = explode(':',$osver[1]);
539   if($osver[0] == '') $osver[0]='unkown';   if($osver[0] == '') $osver[0]='unknown';
540   if($osver[1] == '') $osver[1]='unkown';   if($osver[1] == '') $osver[1]='unknown';
541    
542   # update os string in database   # update os string in database
543   if($alxos == '' && $osver[0] >= '0.5.3')   if($alxos == '' && $osver[0] >= '0.5.3')
# Line 467  echo '</td><td valign=top>'; Line 551  echo '</td><td valign=top>';
551   echo '<u>OS:</u> '.$osver[0].'<br>';   echo '<u>OS:</u> '.$osver[0].'<br>';
552   echo '<u>Utils:</u> '.$osver[1].'<br>';   echo '<u>Utils:</u> '.$osver[1].'<br>';
553    
554   if($osver[0] <> 'unkown')   if($osver[0] <> 'unknown')
555   {   {
556   //write them to database   //write them to database
557   }   }
# Line 488  echo '</td><td valign=top>'; Line 572  echo '</td><td valign=top>';
572   echo '<input class="but" type=button value="LAN" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=lan\',\'POST\');">';   echo '<input class="but" type=button value="LAN" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=lan\',\'POST\');">';
573   echo '<input class="but" type=button value="WLAN" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=wlan\',\'POST\');">';   echo '<input class="but" type=button value="WLAN" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=wlan\',\'POST\');">';
574   echo '<input class="but" type=button value="VGA" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=vga\',\'POST\');">';   echo '<input class="but" type=button value="VGA" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=vga\',\'POST\');">';
575     echo '<br>';
576     echo '<input class="but" type=button value="PRN" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=printer\',\'POST\');">';
577     echo '<input class="but" type=button value="HRDW" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=system\',\'POST\');">';
578   echo '<br><br>';   echo '<br><br>';
579   }   }
580    
581   echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff" align="center"><b>';   echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff" align="center"><b>';
582   echo 'Remote Shadow:</b></div>';   echo 'Remote Shadow:</b></div>';
583   echo '<input class="but" type=button value="VNC" style="width:150px" onclick="window.open(\'vncviewer.php?ip='.$conn['ip'].'\', \'VncViewer\', \'width=200,height=100\')"><br>';   echo '<input class="but" type=button value="VNC" style="width:75px" onclick="window.open(\'vncviewer.php?ip='.$conn['ip'].'\', \'VncViewer\', \'width=200,height=100\')">';
584   echo '<input class="but" type=button value="SSH" style="width:150px" onclick="window.open(\'mindterm.php?ip='.$conn['ip'].'\', \'MindTerm\', \'width=200,height=100\')"><br>';   echo '<input class="but" type=button value="SSH" style="width:75px" onclick="window.open(\'mindterm.php?ip='.$conn['ip'].'\', \'MindTerm\', \'width=200,height=100\')">';
585   echo '<br>';   echo '<br><br>';
586   echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff" align="center"><b>';   echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff" align="center"><b>';
587   echo 'Client Update:</b></div>';   echo 'Client Update:</b></div>';
588   echo '<input class="but" type=button value="UPDATE MAGE DB" style="width:150px" onclick="if(confirm(\'UPDATE DB ON CLIENT #'.$id.' ?\')) window.open(\'mageupgrade.php?client='.$id.'&ip='.$conn['ip'].'&op=update\', \'ShutdownWin\', \'width=800,height=600\')"><br>';   echo '<input class="but" type=button value="UPDATE MAGE DB" style="width:150px" onclick="if(confirm(\'UPDATE DB ON CLIENT #'.$id.' ?\')) window.open(\'mageupgrade.php?client='.$id.'&ip='.$conn['ip'].'&op=update\', \'ShutdownWin\', \'width=800,height=600\')"><br>';

Legend:
Removed from v.2636  
changed lines
  Added in v.4908