Magellan Linux

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

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

alx-src/branches/alx-web-050/show.php revision 1610 by niro, Thu Dec 2 23:02:19 2010 UTC alx-src/branches/alx-web-060/show.php revision 2634 by niro, Thu Jul 7 19:30:13 2011 UTC
# Line 1  Line 1 
1  <?  <?
2   // INCLUDE UND TABELLEN-DEFINITIONEN  // INCLUDE UND TABELLEN-DEFINITIONEN
3   include('include/basesql.php');  include('include/basesql.php');
4   $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');  include('include/common-functions.php');
  $multi= array(    0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0);  
  $data = array();  
5    
6    // INCLUDE CURRENT-PROBLEMS
7    include('include/current-problems.php');
8    
9   // get alx version info for  $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');
10   $alxinfo = sqlfirst('SELECT * FROM client_version WHERE serial='.$id);  $multi= array(    0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0);
11   $alxos = $alxinfo[os];  $data = array();
  $alxutils = $alxinfo[utils];  
12    
  if($kill==1)  
  {  
  foreach($tabs as $t) mysql_query('UPDATE '.$t.' SET serial=-serial WHERE serial='.$id);  
13    
14   echo '<body onload="window.setTimeout(\'window.close()\', 1750)">';  // get alx version info for
15   echo '<table width=100% height=100% style="border:solid black 1px; background-color:#d5e5ff"><tr><td valign=middle align=center>';  $alxinfo = sqlfirst('SELECT * FROM client_version WHERE serial='.$id);
16    $alxos = $alxinfo[os];
17    $alxutils = $alxinfo[utils];
18    
19   if($id<0) echo 'ACTIVATED #'.abs($id);  if($kill==1)
20   else echo 'DEACTIVATED #'.$id;  {
21     foreach($tabs as $t) mysql_query('UPDATE '.$t.' SET serial=-serial WHERE serial='.$id);
22    
23   echo '</td></tr></table>';   echo '<body onload="window.setTimeout(\'window.close()\', 1750)">';
24   return true;   echo '<table width=100% height=100% style="border:solid black 1px; background-color:#d5e5ff"><tr><td valign=middle align=center>';
  }  
25    
26   // FELD-DEFINITIONEN  (ARRAY=>DROPDOWN / HIDDEN / IGNORE / 1 / BOLD / PASSWORD / SHOW / SHOWTIME / MONITORID)   if($id<0) echo 'ACTIVATED #'.abs($id);
27   $drop = array();   else echo 'DEACTIVATED #'.$id;
  if($alxos >= '0.5.3')  
  {  
  $drop['cfg_graphic_module'] = array('vesa', 'ati', 'cirrus', 'i710', 'intel', 'nv', 'mga', 'r128', 'radeon', 's3', 's3virge', 'savage', 'sis', 'trident', 'tseng', 'via');  
  }  
  else  
  {  
  $drop['cfg_graphic_module'] = array('vesa', 'ati', 'cirrus', 'i810', 'i710', 'nv', 'mga', 'r128', 'radeon', 's3', 's3virge', 'savage', 'sis', 'trident', 'tseng', 'via');  
  }  
  $drop['resolution'] = array('640x480', '800x600', '1024x768', '1280x960', '1280x1024', '1360x768', '1366x768', '1400x1050', '1440x900', '1600x1200', '1680x1050');  
  $drop['depth'] = array('24', '16', '8');  
  $drop['mouse'] = array('Auto', 'IMPS/2', 'PS/2');  
  $drop['cfg_network_module'] = array('3c59x', '8139too', '8139cp', 'e100', 'ne2k-pci', 'pcnet32', 'sis900', 'via-rhine', 'zd1211', 'b44', 'bnx2', 'dl2k', 'e1000', 'r8169', 'sk98lin', 'tg3', 'via-velocity');  
  $drop['networking'] = array('dhcp', 'static');  
  $drop['port'] = array('lpt1', 'usb1', 'usb2', 'com1', 'com2', 'lpd', 'socket', 'ipp');  
  $drop['location'] = sqlarr('SELECT location FROM client_locations', '', 'location');  
  $drop['id'] = 'hidden';  
  $drop['flg_modified'] = '1';  
  $drop['serial'] = 'ignore';  
  if($alxos>='0.5.3')  
  {  
  $drop['monitorid'] = 'ignore';  
  $drop['refresh_rate'] = array('','60','75','85','100');  
  }  
  else  
  {  
  $drop['monitorid'] = 'monitorid';  
  $drop['refresh_rate'] = 'ignore';  
  }  
  $drop['hostname'] = 'bold';  
  $drop['session'] = 'bold';  
  $drop['cfg_autostart_session'] = 'filename';  
  $drop['mtime'] = 'showtime';  
  $drop['mac'] = 'show';  
  $drop['client_serials_serial'] = 'show';  
  $drop['password'] = 'password';  
  $drop['shell'] = 'password';  
  $drop['vnc'] = 'password';  
  $drop['samba'] = 'password';  
  $drop['station'] = 'password';  
  $drop['txt'] = 'txt';  
  $drop['screensaver'] = array('','blank', 'random', 'ant', 'ant3d', 'apollonian', 'ball', 'bat', 'blot', 'bomb', 'bouboule',  
  'bounce', 'braid', 'bubble', 'bug', 'clock', 'coral', 'crystal', 'daisy', 'dclock', 'decay', 'deco',  
  'demon', 'dilemma', 'discrete', 'dragon', 'drift', 'euler2d', 'eyes', 'fadeplot', 'fiberlamp', 'flag',  
  'flame', 'flow', 'forest', 'galaxy', 'goop', 'grav', 'helix', 'hop', 'hyper', 'ico', 'ifs', 'image',  
  'juggle', 'julia', 'kaleid', 'kumppa', 'laser', 'life', 'life1d', 'life3d', 'lightning', 'lisa', 'lissie',  
  'loop', 'lyapunov', 'mandelbrot', 'marquee', 'matrix', 'maze', 'mountain', 'munch', 'nose', 'pacman',  
  'penrose', 'petal', 'petri', 'polyominoes', 'puzzle',  'pyro', 'qix', 'roll',  'rotor', 'scooter', 'shape',  
  'sierpinski', 'slip', 'solitare', 'space', 'sphere', 'spiral', 'spline', 'star', 'starfish', 'strange',  
  'swarm', 'swirl', 't3d', 'tetris', 'thornbird', 'tik_tak', 'toneclock', 'triangle', 'tube', 'turtle',  
  'vines', 'voters', 'wator', 'wire', 'world', 'worm', 'xcl', 'xjack');  
  $drop['iface'] = array('eth0', 'wlan0');  
  $drop['client_version_os'] = 'show';  
  $drop['client_version_utils'] = 'show';  
   
  // ACHTUNG!!! wlan_-Felder heißen eigentlich wireless_  
  $drop['wireless_mode'] = array('', 'managed', 'ad-hoc', 'master', 'repeater', 'secondary', 'monitor', 'auto');  
  $drop['wireless_auth_mode'] = array('', 'wep', 'wpa', 'off');  
  $drop['wireless_key_length'] = array('', '64', '128', '256');  
  $drop['wireless_channel'] = array('', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14');  
  $drop['wireless_frequency'] = array('', '2.412G', '2.417G', '2.422G', '2.427G', '2.432G', '2.437G', '2.442G',  
  '2.447G', '2.452G', '2.457G', '2.462G', '2.467G', '2.472G', '2.484G');  
  $drop['wireless_key'] = 'password';  
  $drop['wireless_key_ascii'] = 'password';  
28    
29   // GGF. NEUEN DATENSATZ EINFÜGEN   echo '</td></tr></table>';
30   if(isset($_POST['do_add']))   return true;
31   {  }
  list($bla,$what) = explode(' ',$_POST['do_add']);  
  if($what=='COMMENT') sqladd('cfg_comments', array('serial'=>$id));  
  else if($what=='PRINTER') sqladd('cfg_printers', array('serial'=>$id));  
  else if($what=='MODULE') sqladd('cfg_modules', array('serial'=>$id));  
  else if($what=='SESSION') sqladd('cfg_sessions', array('domain'=>'DOM_AKA_NT', 'browseradrs'=>'128.20.50.50;128.20.50.66;128.20.50.71;128.20.50.46;128.20.100.31;128.20.100.32', 'serial'=>$id));  
  else if($what=='MENUITEM') sqladd('cfg_other_menuitems', array('serial'=>$id));  
  }  
   
   
  // GGF. SPEICHERN  
  if($_POST['do_upl'])  
  {  
  function postarr($prefix)  
  {  
  $prefix.='_';  
  $prelen = strlen($prefix);  
   
  $arr = array();  
  foreach($_POST as $k=>$v)  
  if((substr($k,0,$prelen)==$prefix) && ($v!='KEEPPASS'))  
  $arr[substr($k,$prelen)] = stripslashes($v);  
32    
33   return $arr;  // FELD-DEFINITIONEN  (ARRAY=>DROPDOWN / HIDDEN / IGNORE / 1 / BOLD / PASSWORD / SHOW / SHOWTIME / MONITORID)
34   }  $drop = array();
35    if($alxos >= '0.5.3')
36    {
37     $drop['cfg_graphic_module'] = array('vesa', 'ati', 'cirrus', 'i710', 'intel', 'nv', 'mach64', 'mga', 'openchrome', 'radeon', 's3', 's3virge', 'savage', 'sis', 'trident', 'tseng');
38    }
39    else
40    {
41     $drop['cfg_graphic_module'] = array('vesa', 'ati', 'cirrus', 'i810', 'i710', 'nv', 'mga', 'r128', 'radeon', 's3', 's3virge', 'savage', 'sis', 'trident', 'tseng', 'via');
42    }
43    $drop['resolution'] = array('640x480', '800x600', '1024x768', '1280x960', '1280x1024', '1360x768', '1366x768', '1400x1050', '1440x900', '1600x1200', '1680x1050', '1280x720', '1920x1080');
44    $drop['depth'] = array('24', '16', '8');
45    $drop['mouse'] = array('Auto', 'IMPS/2', 'PS/2');
46    $drop['keyboard'] = array('PC105');
47    if($alxos >= '0.6.0')
48    {
49     $drop['cfg_network_module'] = array('3c509', '3c59x', '8139cp', '8139too', '8390', 'amd8111e', 'atl1c', 'atl1e', 'atl1', 'atl2', 'b44', 'bnx2', 'cnic', 'e100', 'e1000', 'e1000e', 'forcedeth', 'igb', 'ipg', 'jme', 'natsemi', 'ne2k-pci', 'ns83820', 'pcnet32', 'qla3xxx', 'r8169', 'sis190', 'sis900', 'skge', 'sky2', 'tg3', 'typhoon', 'via-rhine', 'via-velocity', 'adm8211', 'airo', 'at76c50x-usb', 'ar9170usb', 'ath5k', 'ath9k', 'atmel', 'b43', 'b43legacy', 'hostap_pci', 'hostap_plx', 'ipw2100', 'ipw2200', 'iwl3945', 'usb8xxx', 'libertas_tf', 'libertas_tf_usb', 'mwl8k', 'orinoco', 'orinoco_nortel', 'orinoco_plx', 'orinoco_tmd', 'orinoco_usb', 'p54pci', 'p54usb', 'prism54', 'rndis_wlan', 'rt2400pci', 'rt2500pci', 'rt2500usb', 'rt2800pci', 'rt2800usb', 'rt61pci', 'rt73usb', 'rtl8180', 'rtl8187', 'wl1251', 'wl1271', 'zd1201', 'zd1211rw');
50    }
51    else
52    {
53     $drop['cfg_network_module'] = array('3c59x', '8139too', '8139cp', 'e100', 'ne2k-pci', 'pcnet32', 'sis900', 'via-rhine', 'zd1211', 'b44', 'bnx2', 'dl2k', 'e1000', 'forcedeth', 'r8169', 'sk98lin', 'tg3', 'via-velocity');
54    }
55    $drop['networking'] = array('dhcp', 'static');
56    // 0.6.0 does not support lpd, ipp and socket printing atm
57    if($alxos>='0.6.0')
58    {
59     $drop['port'] = array('lpt1', 'usb1', 'usb2', 'com1', 'com2');
60     for ($i=0; $i<999; $i++) { $drop['cfg_printers_'.$i.'_ip'] = 'ignore'; }
61     $drop['share'] = 'ignore';
62    }
63    else
64    {
65     $drop['cfg_printers_port'] = array('lpt1', 'usb1', 'usb2', 'com1', 'com2', 'lpd', 'socket', 'ipp');
66    }
67    $drop['location'] = sqlarr('SELECT location FROM client_locations', '', 'location');
68    $drop['id'] = 'hidden';
69    $drop['flg_modified'] = '1';
70    $drop['serial'] = 'ignore';
71    if($alxos>='0.5.3')
72    {
73     $drop['monitorid'] = 'ignore';
74     $drop['refresh_rate'] = array('','60','75','85','100');
75    }
76    else
77    {
78     $drop['monitorid'] = 'monitorid';
79     $drop['refresh_rate'] = 'ignore';
80    }
81    $drop['hostname'] = 'bold';
82    $drop['session'] = 'bold';
83    if($alxos>='0.6.0')
84    {
85     $drop['cfg_autostart_session'] = array('');
86     $drop['cfg_autostart_session'] += sqlarr('SELECT filename FROM cfg_sessions where serial='.$id, 'array', 'filename');
87    }
88    else
89    {
90     $drop['cfg_autostart_session'] = 'filename';
91    }
92    $drop['mtime'] = 'showtime';
93    $drop['mac'] = 'show';
94    $drop['client_serials_serial'] = 'show';
95    $drop['password'] = 'password';
96    $drop['shell'] = 'password';
97    $drop['vnc'] = 'password';
98    $drop['samba'] = 'password';
99    $drop['station'] = 'password';
100    $drop['txt'] = 'txt';
101    $drop['screensaver'] = array('','blank', 'random', 'ant', 'ant3d', 'apollonian', 'ball', 'bat', 'blot', 'bomb', 'bouboule',
102     'bounce', 'braid', 'bubble', 'bug', 'clock', 'coral', 'crystal', 'daisy', 'dclock', 'decay', 'deco',
103     'demon', 'dilemma', 'discrete', 'dragon', 'drift', 'euler2d', 'eyes', 'fadeplot', 'fiberlamp', 'flag',
104     'flame', 'flow', 'forest', 'galaxy', 'goop', 'grav', 'helix', 'hop', 'hyper', 'ico', 'ifs', 'image',
105     'juggle', 'julia', 'kaleid', 'kumppa', 'laser', 'life', 'life1d', 'life3d', 'lightning', 'lisa', 'lissie',
106     'loop', 'lyapunov', 'mandelbrot', 'marquee', 'matrix', 'maze', 'mountain', 'munch', 'nose', 'pacman',
107     'penrose', 'petal', 'petri', 'polyominoes', 'puzzle',  'pyro', 'qix', 'roll',  'rotor', 'scooter', 'shape',
108     'sierpinski', 'slip', 'solitare', 'space', 'sphere', 'spiral', 'spline', 'star', 'starfish', 'strange',
109     'swarm', 'swirl', 't3d', 'tetris', 'thornbird', 'tik_tak', 'toneclock', 'triangle', 'tube', 'turtle',
110     'vines', 'voters', 'wator', 'wire', 'world', 'worm', 'xcl', 'xjack');
111    $drop['iface'] = array('eth0', 'wlan0');
112    $drop['client_version_os'] = 'show';
113    $drop['client_version_utils'] = 'show';
114    
115    // ACHTUNG!!! wlan_-Felder heißen eigentlich wireless_
116    $drop['wireless_mode'] = array('', 'managed', 'ad-hoc', 'master', 'repeater', 'secondary', 'monitor', 'auto');
117    $drop['wireless_auth_mode'] = array('', 'wep', 'wpa', 'wpa2', 'off');
118    $drop['wireless_key_length'] = array('', '64', '128', '256');
119    $drop['wireless_channel'] = array('', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14');
120    $drop['wireless_frequency'] = array('', '2.412G', '2.417G', '2.422G', '2.427G', '2.432G', '2.437G', '2.442G',
121     '2.447G', '2.452G', '2.457G', '2.462G', '2.467G', '2.472G', '2.484G');
122    $drop['wireless_key'] = 'password';
123    $drop['wireless_key_ascii'] = 'password';
124    
125    // get current citrix sessions
126    exec($wwwroot.'/pnabrowse-wrapper -A '.str_replace(";", " ", $citrix_browseradrs), $returned_citrix_sessions,$retval);
127    if ($retval == 0)
128    {
129     $citrix_public_applications = str_replace("'", "", $returned_citrix_sessions);
130     for ($i=0; $i<999; $i++) { $drop['cfg_sessions_'.$i.'_session'] = $citrix_public_applications; }
131    }
132    
133    // GGF. NEUEN DATENSATZ EINFÜGEN
134    if(isset($_POST['do_add']))
135    {
136     list($bla,$what) = explode(' ',$_POST['do_add']);
137     if($what=='COMMENT') sqladd('cfg_comments', array('serial'=>$id));
138     else if($what=='PRINTER') sqladd('cfg_printers', array('serial'=>$id));
139     else if($what=='MODULE') sqladd('cfg_modules', array('serial'=>$id));
140     else if($what=='SESSION') sqladd('cfg_sessions', array('domain'=>$citrix_domain_name, 'browseradrs'=>$citrix_browseradrs, 'serial'=>$id));
141     else if($what=='MENUITEM') sqladd('cfg_other_menuitems', array('serial'=>$id));
142    }
143    
144    
145    // GGF. SPEICHERN
146    if($_POST['do_upl'])
147    {
148     function postarr($prefix)
149     {
150     $prefix.='_';
151     $prelen = strlen($prefix);
152    
153     $arr = array();
154     foreach($_POST as $k=>$v)
155     if((substr($k,0,$prelen)==$prefix) && ($v!='KEEPPASS'))
156     $arr[substr($k,$prelen)] = stripslashes($v);
157    
158   foreach($tabs as $k=>$t)   return $arr;
  {  
  if(!$multi[$k]) mysql_query('UPDATE '.$t.' SET '.updatestr(postarr($t)).' WHERE serial='.$id);  
  else  
  {  
  $i=0;  
  while(isset($_POST[$t.'_'.$i.'_id']))  
  {  
  if($_POST[$t.'_'.$i.'_delete'])  
  mysql_query('DELETE FROM '.$t.' WHERE serial='.$id.' AND id='.$_POST[$t.'_'.$i.'_id']);  
  else  
  mysql_query('UPDATE '.$t.' SET '.updatestr(postarr($t.'_'.$i)).' WHERE serial='.$id.' AND id='.$_POST[$t.'_'.$i.'_id']);  
  $i++;  
  }  
  }  
  }  
159   }   }
160    
   
  // EINLESEN DER DATEN AUS SQL-TABELLEN  
161   foreach($tabs as $k=>$t)   foreach($tabs as $k=>$t)
162   {   {
163   if($multi[$k]) $data[$t] = sqlarr('SELECT * FROM '.$t.' WHERE serial='.$id);   if(!$multi[$k]) mysql_query('UPDATE '.$t.' SET '.updatestr(postarr($t)).' WHERE serial='.$id);
  else $data[$t] = sqlfirst('SELECT * FROM '.$t.' WHERE serial='.$id);  
  }  
   
  // ANZEIGEN - KLAPPFUNKTIONEN  
  $absnames = array();  
   
  function openabs($heading, $helpfile='')  
  {  
  global $absnames;  
  $absnames[] = $heading;  
   
  // <AufZuLink> <Bild/> <Heading/> </AufZuLink><BR/> <Absatz>  
   
  if( $_SESSION['openclose'][$heading] )  
  {  
  echo '<a href="JavaScript:openclose(\''.$heading.'\',1);"><img border="0" src="pics/minus.gif" title="CLOSE" id="sch_bild_'.$heading.'"> <b>['.$heading.']</b></a>';  
  if($helpfile!='') echo ' <a href="JavaScript:showhelp(\''.$helpfile.'\')" title="HELP">[?]</a>';  
  echo '<br><div id="sch_absatz_'.$heading.'" style="top:0px; visibility:visible">';  
  }  
164   else   else
165   {   {
166   echo '<a href="JavaScript:openclose(\''.$heading.'\',1);"><img border="0" src="pics/plus.gif" title="OPEN" id="sch_bild_'.$heading.'"> <b>['.$heading.']</b></a>';   $i=0;
167   if($helpfile!='') echo ' <a href="JavaScript:showhelp(\''.$helpfile.'\')" title="HELP">[?]</a>';   while(isset($_POST[$t.'_'.$i.'_id']))
168   echo '<br><div id="sch_absatz_'.$heading.'" style="position:absolute; top:0px; visibility:hidden">';   {
169     if($_POST[$t.'_'.$i.'_delete'])
170     mysql_query('DELETE FROM '.$t.' WHERE serial='.$id.' AND id='.$_POST[$t.'_'.$i.'_id']);
171     else
172     mysql_query('UPDATE '.$t.' SET '.updatestr(postarr($t.'_'.$i)).' WHERE serial='.$id.' AND id='.$_POST[$t.'_'.$i.'_id']);
173     $i++;
174     }
175   }   }
176   }   }
177    
178     // reload site
179     header("location: show.php?id=".$id);
180    }
181    
182    // EINLESEN DER DATEN AUS SQL-TABELLEN
183    foreach($tabs as $k=>$t)
184    {
185     if($multi[$k]) $data[$t] = sqlarr('SELECT * FROM '.$t.' WHERE serial='.$id);
186     else $data[$t] = sqlfirst('SELECT * FROM '.$t.' WHERE serial='.$id);
187    }
188    
189    // ANZEIGEN - KLAPPFUNKTIONEN
190    $absnames = array();
191    
192    function openabs($heading, $helpfile='')
193    {
194     global $absnames;
195     $absnames[] = $heading;
196    
197   function closeabs()   // <AufZuLink> <Bild/> <Heading/> </AufZuLink><BR/> <Absatz>
198    
199     if( $_SESSION['openclose'][$heading] )
200   {   {
201   // </Absatz> <BR/>   echo '<a href="JavaScript:openclose(\''.$heading.'\',1);"><img border="0" src="pics/minus.gif" title="CLOSE" id="sch_bild_'.$heading.'"> <b>['.$heading.']</b></a>';
202     if($helpfile!='') echo ' <a href="JavaScript:showhelp(\''.$helpfile.'\')" title="HELP">[?]</a>';
203   echo '</div><br>';   echo '<br><div id="sch_absatz_'.$heading.'" style="top:0px; visibility:visible">';
204   }   }
205     else
206     {
207     echo '<a href="JavaScript:openclose(\''.$heading.'\',1);"><img border="0" src="pics/plus.gif" title="OPEN" id="sch_bild_'.$heading.'"> <b>['.$heading.']</b></a>';
208     if($helpfile!='') echo ' <a href="JavaScript:showhelp(\''.$helpfile.'\')" title="HELP">[?]</a>';
209     echo '<br><div id="sch_absatz_'.$heading.'" style="position:absolute; top:0px; visibility:hidden">';
210     }
211    }
212    
213    function closeabs()
214    {
215     // </Absatz> <BR/>
216    
217     echo '</div><br>';
218    }
219    
220   // ANZEIGEN  
221    // ANZEIGEN
222   function parsearr($name, $arr, $del=false, $wireless=false)  
223    function parsearr($name, $arr, $del=false, $wireless=false)
224    {
225     global $drop;
226     global $id;
227     global $alxos;
228    
229     $parts = explode('_',$name); $helpfile='help.php?page='.$parts[1];
230     openabs($name, $helpfile);
231     echo '<table class="keytab">';
232    
233     foreach($arr as $k=>$v)
234   {   {
235   global $drop;   if( (substr($k,0,9)=='wireless_') xor $wireless ) Continue;
236   global $id;  
237   global $alxos;   $d = $drop[$name.'_'.$k]; if($d==null) $d = $drop[$k];
238     $k = str_replace('wireless_', '', $k);
239   $parts = explode('_',$name); $helpfile='help.php?page='.$parts[1];   $k2 = $k;
  openabs($name, $helpfile);  
  echo '<table class="keytab">';  
240    
241   foreach($arr as $k=>$v)   //replace some drivers on 0.5.3 or higher
242     if($alxos >= '0.5.3')
243   {   {
244   if( (substr($k,0,9)=='wireless_') xor $wireless ) Continue;   if($v == 'i810')
   
  $d = $drop[$name.'_'.$k]; if($d==null) $d = $drop[$k];  
  $k = str_replace('wireless_', '', $k);  
  $k2 = $k;  
   
  //replace i810 with intel on 0.5.3 or higher  
  if($alxos >= '0.5.3' && $v == 'i810')  
245   {   {
246   echo '<br><font color="#FF0000">Replaced "i810" with "intel" - Please press SAVE!</font><br>';   echo '<br><font color="#FF0000">Replaced "i810" with "intel" - Please press SAVE!</font><br>';
247   $v='intel';   $v='intel';
248   }   }
249     if($v == 'r128')
250     {
251     echo '<br><font color="#FF0000">Replaced "r128" with "vesa" - Please press SAVE!</font><br>';
252     $v='vesa';
253     }
254    
255   if(is_array($d))   if($v == 'via')
256   {   {
257   echo '<tr><td class="key">'.$k2.'</td><td>= <select style="width:144px" name="'.$name.'_'.$k.'">';   echo '<br><font color="#FF0000">Replaced "via" with "openchrome" - Please press SAVE!</font><br>';
258   foreach($d as $di) if($v==$di) echo '<option selected>'.$di; else echo '<option>'.$di;   $v='openchrome';
  echo '</select></td></tr>';  
259   }   }
  else if($d=='hidden') echo '<tr><td colspan=2><input type=hidden name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';  
  else if($d=='1') echo '<tr><td colspan=2><input type=hidden name="'.$name.'_'.$k.'" value="1"></td></tr>';  
  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=='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=='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=='show') echo '<tr><td class="key">'.$k2.'</td><td>= <b>'.$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>';  
  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') echo '<tr><td class="key">'.$k2.'</td><td>= <input type=password style="width:144px" name="'.$name.'_'.$k.'" value="KEEPPASS"></td></tr>';  
  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!='ignore') echo '<tr><td class="key">'.$k2.'</td><td>= <input style="width:144px" name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';  
260   }   }
261    
262   if($del) echo '<tr><td class="key">delete</td><td>=<input type=checkbox name="'.$name.'_delete" value="1"></td></tr>';   # tell something about vesa
263   echo '</table>';   if ($v == 'vesa') echo '<br><font color="#FF0000">Warning: "vesa" graphic module doesn\'t support any resolutions higher than 1024x786x16@60hz!</font><br>';
  closeabs();  
   
  if($name=='cfg_network' && !$wireless) parsearr($name.'_wireless', $arr, $del, true);  
  }  
  function parsearrs($name, $arr)  
  {  
  foreach($arr as $k=>$a)  
  parsearr($name.'_'.$k, $a, true);  
  }  
264    
265   ?><head>  
266   <title>ALX Config</title>   if(is_array($d))
267   <style>   {
268   body,table { font-family:Tahoma; font-size:10pt }   echo '<tr><td class="key">'.$k2.'</td><td>= <select style="width:144px" name="'.$name.'_'.$k.'">';
269   a { color:#000000; text-decoration:none; }   foreach($d as $di) if($v==$di) echo '<option selected>'.$di; else echo '<option>'.$di;
270   .key { width:85px }   echo '</select></td></tr>';
271   .keytab, input, textarea, select, option { font-size:8pt; font-family:Tahoma }   }
272   .but { font-size:10pt; font-family:Tahoma; height:23px }   else if($d=='hidden') echo '<tr><td colspan=2><input type=hidden name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';
273   </style>   else if($d=='1') echo '<tr><td colspan=2><input type=hidden name="'.$name.'_'.$k.'" value="1"></td></tr>';
274   <script language="JavaScript" src="openclose_ajax.js"></script>   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>';
275   <script language="JavaScript">   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>';
276     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>';
277   function openclose(nummer, act)   else if($d=='show') echo '<tr><td class="key">'.$k2.'</td><td>= <b>'.$v.'</b></td></tr>';
278   {   else if($d=='showtime') echo '<tr><td class="key">'.$k2.'</td><td>= <b>'.date('d.m.y - H:i:s', $v).'</b></td></tr>';
279   var bild = document.images['sch_bild_'+nummer];   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>';
280   var absatz = document.all['sch_absatz_'+nummer].style;   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>';
281   var senden = false;   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>';
282     else if($d!='ignore') echo '<tr><td class="key">'.$k2.'</td><td>= <input style="width:144px" name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';
283   if(bild.title == 'OPEN')   }
284    
285     if($del) echo '<tr><td class="key">delete</td><td>=<input type=checkbox name="'.$name.'_delete" value="1"></td></tr>';
286     echo '</table>';
287     closeabs();
288    
289     if($name=='cfg_network' && !$wireless) parsearr($name.'_wireless', $arr, $del, true);
290    }
291    function parsearrs($name, $arr)
292    {
293     foreach($arr as $k=>$a)
294     parsearr($name.'_'.$k, $a, true);
295    }
296    
297    ?><head>
298    <title>ALX Config</title>
299    <style>
300     body,table { font-family:Tahoma; font-size:10pt }
301     a { color:#000000; text-decoration:none; }
302     .key { width:85px }
303     .keytab, input, textarea, select, option { font-size:8pt; font-family:Tahoma }
304     .but { font-size:10pt; font-family:Tahoma; height:23px }
305    </style>
306    <script type="text/javascript" src="js/jquery-1.2.6.min.js"></script>
307    <script language="JavaScript" src="openclose_ajax.js"></script>
308    <script language="JavaScript">
309    
310     // opens an url and shows retval in a javascript-alert on current site
311     function urlopen(url,typ) {
312     var $url = url.split("?");
313     $.ajax({type:""+typ+"",url:$url[0],data:$url[1],cache:false,success:function(data){ alert(data); }});
314     }
315    
316    /* ignore this atm, not always working, sometime open does not work
317     function openclose(nummer, act)
318     {
319     var bild = document.images['sch_bild_'+nummer];
320     var absatz = document.all['sch_absatz_'+nummer].style;
321     var senden = false;
322    
323     $("#sch_absatz_"+nummer).toggle(0, function(){
324     if($(this).css("display")=="none"){$("#sch_bild_"+nummer).attr({title:'OPEN',src:'pics/plus.gif'});}else{$("#sch_bild_"+nummer).attr({title:'CLOSE',src:'pics/minus.gif'});}
325     });
326     if(act<=1){ $("#sch_bild_"+nummer).attr({title:'CLOSE',src:'pics/minus.gif'}); }else{ $("#sch_bild_"+nummer).attr({title:'OPEN',src:'pics/plus.gif'}); };
327     }
328    */
329     function openclose(nummer, act)
330     {
331     var bild = document.images['sch_bild_'+nummer];
332     var absatz = document.all['sch_absatz_'+nummer].style;
333     var senden = false;
334    
335     if(bild.title == 'OPEN')
336     {
337     if(act<=1)
338   {   {
339   if(act<=1)   absatz.visibility = 'visible';
340   {   absatz.position = '';
341   absatz.visibility = 'visible';   bild.title = 'CLOSE';
342   absatz.position = '';   bild.src = 'pics/minus.gif';
343   bild.title = 'CLOSE';   senden = true;
344   bild.src = 'pics/minus.gif';   act = 0;
  senden = true;  
  act = 0;  
  }  
345   }   }
346   else   }
347     else
348     {
349     if(act>=1)
350   {   {
351   if(act>=1)   absatz.visibility = 'hidden';
352   {   absatz.position = 'absolute';
353   absatz.visibility = 'hidden';   bild.title = 'OPEN';
354   absatz.position = 'absolute';   bild.src = 'pics/plus.gif';
355   bild.title = 'OPEN';   senden = true;
356   bild.src = 'pics/plus.gif';   act = 2;
  senden = true;  
  act = 2;  
  }  
357   }   }
358     }
  if(senden) sendopenclose(nummer,act);  
  }  
   
  function showhelp(name)  
  { window.open(name, 'HelpWin', 'width=620,height=500,scrollbars=yes'); }  
   
  </script>  
  </head>  
   
  <body><?  
359    
360     if(senden) sendopenclose(nummer,act);
361   //echo '<body style="background-image:URL(logo.jpg);background-repeat:no-repeat; background-position:0px 0px; margin-top:25px">';   }
  echo '<form action="show.php" method=post onreset="return confirm(\'UNDO CHANGES?\')">';  
  echo '<input type=hidden name="do_upl" value="1">';  
  echo '<input type=hidden name="id" value="'.$id.'">';  
362    
363   // ANZEIGEN => NON-MULTI TABELLEN   function showhelp(name)
364   echo '<table><tr><td valign=top width="300">';   { window.open(name, 'HelpWin', 'width=620,height=500,scrollbars=yes'); }
365    
366   echo '<b style="font-size:6pt">';  </script>
367   echo '<a href="JavaScript:opencloseall(0);" title="OPEN ALL"><img src="pics/plus.gif" border="0"> OPEN...</a> ';  </head>
  echo '<a href="JavaScript:opencloseall(2);" title="CLOSE ALL"><img src="pics/minus.gif" border="0"> CLOSE...</a> ALL';  
  echo '</b><br><br>';  
368    
369   foreach($tabs as $k=>$t) if(!$multi[$k]) parsearr($t, $data[$t]);  <body><?
370    
371   // ANZEIGEN => MULTI TABELLEN  echo '<form action="show.php" method="post" onreset="return confirm(\'UNDO CHANGES?\')">';
372   echo '</td><td valign=top width="300">';  echo '<input type=hidden name="do_upl" value="1">';
373    echo '<input type=hidden name="id" value="'.$id.'">';
374    
375   foreach($tabs as $k=>$t) if($multi[$k]) parsearrs($t, $data[$t]);  // ANZEIGEN => NON-MULTI TABELLEN
376    echo '<table><tr><td valign=top width="300">';
  echo '<script language="JavaScript">';  
  echo 'function opencloseall(act) { ';  
   
  foreach($absnames as $absname)  
  echo 'openclose("'.$absname.'", act); ';  
   
  echo '}</script>';  
377    
378   // ANZEIGEN => NAVI   echo '<b style="font-size:6pt">';
379   echo '</td><td valign=top>';   echo '<a href="JavaScript:opencloseall(0);" title="OPEN ALL"><img src="pics/plus.gif" border="0"> OPEN...</a> ';
380     echo '<a href="JavaScript:opencloseall(2);" title="CLOSE ALL"><img src="pics/minus.gif" border="0"> CLOSE...</a> ALL';
381     echo '</b><br><br>';
382    
383   // STATUS BESTIMMEN (ON/OFF)   foreach($tabs as $k=>$t) if(!$multi[$k]) parsearr($t, $data[$t]);
384   $conn = sqlfirst('SELECT * FROM state_connected WHERE serial='.$id);  
385   $state = 'Off';  // ANZEIGEN => MULTI TABELLEN
386   if(count($conn)>0)  echo '</td><td valign=top width="300">';
387   {  
388  // passthru($pingcmd." ".$conn['ip']." &> /dev/null && exit 0 || exit 1",$retval);   foreach($tabs as $k=>$t) if($multi[$k]) parsearrs($t, $data[$t]);
389   if($retval==0) $state = 'On';  
390   }   echo '<script language="JavaScript">';
391     echo 'function opencloseall(act) { ';
392    
393     foreach($absnames as $absname)
394     echo 'openclose("'.$absname.'", act); ';
395    
396     echo '}</script>';
397    
398    // ANZEIGEN => NAVI
399    echo '</td><td valign=top>';
400    
401     // STATUS BESTIMMEN (ON/OFF)
402     $conn = sqlfirst('SELECT * FROM state_connected WHERE serial='.$id);
403     $state = 'Off';
404     if(count($conn)>0)
405     {
406     if($retval==0) $state = 'On';
407     }
408    
409     echo '<img src="pics/logo2.jpg"><br><br>';
410    
411     echo '<input class="but" type=submit value="SAVE" style="width:150px"><br><br>';
412    
413     echo '<input class="but" type=submit name="do_add" value="SAVE+ADD COMMENT" style="width:150px"><br>';
414     echo '<input class="but" type=submit name="do_add" value="SAVE+ADD PRINTER" style="width:150px"><br>';
415     echo '<input class="but" type=submit name="do_add" value="SAVE+ADD SESSION" style="width:150px"><br>';
416     echo '<input class="but" type=submit name="do_add" value="SAVE+ADD MODULE" style="width:150px"><br>';
417     echo '<input class="but" type=submit name="do_add" value="SAVE+ADD MENUITEM" style="width:150px"><br><br>';
418    
419    
420     if($id>0) $KILLCAP='DEACTIVATE'; else $KILLCAP='ACTIVATE';
421     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>';
422     echo '<input class="but" type=button value="IMPORT FROM..." style="width:150px" onclick="location.href=\'import.php?id='.$id.'\'"><br>';
423     echo '<input class="but" type=reset value="UNDO CHANGES" style="width:150px"><br><br>';
424    
425   echo '<img src="pics/logo2.jpg"><br><br>';   $davor  = sqlfirst('SELECT mac FROM client_serials WHERE serial='.($id-1),'mac')!=null; if($davor) $disdavor=''; else $disdavor = 'disabled=1';
426     $danach = sqlfirst('SELECT mac FROM client_serials WHERE serial='.($id+1),'mac')!=null; if($danach) $disdanach=''; else $disdanach = 'disabled=1';
427    
428   echo '<input class="but" type=submit value="SAVE" style="width:150px"><br><br>';   echo '<input class="but" type=button '.$disdavor.' value="<" style="width:30px" onclick="location.href=\'show.php?id='.($id-1).'\'">';
429     echo '<input class="but" type=button value="REFRESH" style="width:90px" onclick="location.href=\'show.php?id='.$id.'\'">';
430     echo '<input class="but" type=button '.$disdanach.' value=">" style="width:30px" onclick="location.href=\'show.php?id='.($id+1).'\'">';
431     echo '<br><input class="but" type=button value="INDEX" style="width:150px; font-weight:bold" onclick="location.href=\'index.php\'"><br><br>';
432    
433   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD COMMENT" style="width:150px"><br>';   echo '<br>';
434   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD PRINTER" style="width:150px"><br>';   echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff"><b>';
435   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD SESSION" style="width:150px"><br>';   if($id<0) echo '<b>DEACTIVATED!</b><br><br>';
436   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD MODULE" style="width:150px"><br>';   echo '<u>Serial:</u>&nbsp;&nbsp;#'.$id.'<br>';
437   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD MENUITEM" style="width:150px"><br><br>';   echo '<u>Stand:</u>&nbsp;&nbsp;'.date('H:i:s').'<br>';
438     echo '<u>Status:</u> <img src="pics/'.strtolower($state).'line.gif" align=top> '.$state.'line<br>';
439     if($state=='On')
440   if($id>0) $KILLCAP='DEACTIVATE'; else $KILLCAP='ACTIVATE';   {
441   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 '<u>IP:</u> '.$conn['ip'].'<br><br>';
442   echo '<input class="but" type=button value="IMPORT FROM..." style="width:150px" onclick="location.href=\'import.php?id='.$id.'\'"><br>';   if($alxos >= '0.6.0')
443   echo '<input class="but" type=reset value="UNDO CHANGES" style="width:150px"><br><br>';   {
444     $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']);
445   $davor  = sqlfirst('SELECT mac FROM client_serials WHERE serial='.($id-1),'mac')!=null; if($davor) $disdavor=''; else $disdavor = 'disabled=1';   }
446   $danach = sqlfirst('SELECT mac FROM client_serials WHERE serial='.($id+1),'mac')!=null; if($danach) $disdanach=''; else $disdanach = 'disabled=1';   else
   
  echo '<input class="but" type=button '.$disdavor.' value="<" style="width:30px" onclick="location.href=\'show.php?id='.($id-1).'\'">';  
  echo '<input class="but" type=button value="REFRESH" style="width:90px" onclick="location.href=\'show.php?id='.$id.'\'">';  
  echo '<input class="but" type=button '.$disdanach.' value=">" style="width:30px" onclick="location.href=\'show.php?id='.($id+1).'\'">';  
  echo '<br><input class="but" type=button value="INDEX" style="width:150px; font-weight:bold" onclick="location.href=\'index.php\'"><br><br>';  
   
  echo '<br><br>';  
  echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff"><b>';  
  if($id<0) echo '<b>DEACTIVATED!</b><br><br>';  
  echo '<u>Serial:</u>&nbsp;&nbsp;#'.$id.'<br>';  
  echo '<u>Stand:</u>&nbsp;&nbsp;'.date('H:i:s').'<br>';  
  echo '<u>Status:</u> <img src="pics/'.strtolower($state).'line.gif" align=top> '.$state.'line<br>';  
  if($state=='On')  
447   {   {
448   echo '<u>IP:</u> '.$conn['ip'].'<br><br>';   $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']);
449   $pubkey = mysql_query('select public_key from ssh_auth_clients where serial='.$id.'');   }
450   while ($row = mysql_fetch_row ($pubkey)) {   $osver = explode(':',$osver[1]);
451   # schreiben der .ssh/known_hosts file mit dem public rsa key des client,   if($osver[0] == '') $osver[0]='unkown';
452   # um die "yes" abfrage zu vermeiden   if($osver[1] == '') $osver[1]='unkown';
  $hostfile = fopen ($home."/.ssh/known_hosts","w");  
  fwrite($hostfile,$conn['ip']." ".$row[0],strlen($row[0])+strlen($conn['ip'])+1);  
  fclose($hostfile);  
453    
454   $osver = exec($sshcmd.' '.$conn['ip'].' \'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}"\'');   # update os string in database
455   $osver = explode(':',$osver);   if($alxos == '' && $osver[0] >= '0.5.3')
456   }   {
457   if($osver[0] == '') $osver[0]='unkown';   mysql_query('insert into client_version(serial,os,utils) values("'.$id.'","'.$osver[0].'","'.$osver[1].'")
458   if($osver[1] == '') $osver[1]='unkown';   on duplicate key update os="'.$osver[0].'", utils="'.$osver[1].'"');
459                   echo '<u>OS:</u> '.$osver[0].'<br>';   # reload the site
460                   echo '<u>Utils:</u> '.$osver[1].'<br>';   echo '<script type="text/javascript">setTimeout(\'window.location.reload()\',0);</script>';
461     }
462    
463   if($osver[0] <> 'unkown')   echo '<u>OS:</u> '.$osver[0].'<br>';
464   {   echo '<u>Utils:</u> '.$osver[1].'<br>';
465   //write them to database  
466   }   if($osver[0] <> 'unkown')
467     {
468     //write them to database
469   }   }
470     }
471    
472   echo '</b></div>';   echo '</b></div>';
  //echo '<br><br>';  
473    
474   if($state=='On')   if($state=='On')
475     {
476     echo '<input class="but" type=button value="REBOOT" style="width:150px" onclick="if(confirm(\'REBOOT CLIENT #'.$id.' ?\')) window.open(\'reboot.php?client='.$id.'&ip='.$conn['ip'].'&op=reboot\', \'ShutdownWin\', \'width=200,height=100\')"><br>';
477     echo '<input class="but" type=button value="SHUTDOWN" style="width:150px" onclick="if(confirm(\'SHUTDOWN CLIENT #'.$id.' ?\')) window.open(\'reboot.php?client='.$id.'&ip='.$conn['ip'].'&op=halt\', \'ShutdownWin\', \'width=200,height=100\')"><br>';
478     echo '<br>';
479    
480     if($alxos >= '0.6.0')
481   {   {
482   echo '<input class="but" type=button value="REBOOT" style="width:150px" onclick="if(confirm(\'REBOOT CLIENT #'.$id.' ?\')) window.open(\'reboot.php?client='.$id.'&ip='.$conn['ip'].'&op=reboot\', \'ShutdownWin\', \'width=200,height=100\')"><br>';   echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff" align="center"><b>';
483   echo '<input class="but" type=button value="SHUTDOWN" style="width:150px" onclick="if(confirm(\'SHUTDOWN CLIENT #'.$id.' ?\')) window.open(\'reboot.php?client='.$id.'&ip='.$conn['ip'].'&op=halt\', \'ShutdownWin\', \'width=200,height=100\')"><br>';   echo 'Hardware Detection:</b></div>';
484   echo '<br>';   echo '<input class="but" type=button value="LAN" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=lan\',\'POST\');">';
485                   echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff" align="center"><b>';   echo '<input class="but" type=button value="WLAN" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=wlan\',\'POST\');">';
486                  echo 'Remote Shadow:</b></div>';   echo '<input class="but" type=button value="VGA" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=vga\',\'POST\');">';
487   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 '<br><br>';
  echo '<br>';  
                  echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff" align="center"><b>';  
                 echo 'Client Update:</b></div>';  
  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="CALC DEPS" style="width:150px" onclick="if(confirm(\'CALC DEPS FOR CLIENT #'.$id.' ?\')) window.open(\'mageupgrade.php?client='.$id.'&ip='.$conn['ip'].'&op=calc\', \'ShutdownWin\', \'width=800,height=600\')"><br>';  
  echo '<input class="but" type=button value="UPGRADE CLIENT" style="width:150px" onclick="if(confirm(\'UPGRADE ALL PACKAGES ON CLIENT #'.$id.' ?\')) window.open(\'mageupgrade.php?client='.$id.'&ip='.$conn['ip'].'&op=upgrade\', \'ShutdownWin\', \'width=800,height=600\')"><br>';                                        
488   }   }
  else  
  echo '<input class="but" type=button value="WAKE ON LAN" style="width:150px" onclick="if(confirm(\'WAKE CLIENT #'.$id.' ?\')) window.open(\'wake_on_lan.php?mac='.$data['client_serials']['mac'].'\', \'WakeWin\', \'width=200,height=100\')"><br>';  
489    
490   echo '<br><center><a href="share/ChangeLog.html" target="_blank">[ChangeLog]</a> <a href="share/FAQ.html" target="_blank">[FAQs]</a></center>';   echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff" align="center"><b>';
491     echo 'Remote Shadow:</b></div>';
492     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>';
493     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>';
494     echo '<br>';
495     echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff" align="center"><b>';
496     echo 'Client Update:</b></div>';
497     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>';
498     echo '<input class="but" type=button value="CALC DEPS" style="width:150px" onclick="if(confirm(\'CALC DEPS FOR CLIENT #'.$id.' ?\')) window.open(\'mageupgrade.php?client='.$id.'&ip='.$conn['ip'].'&op=calc\', \'ShutdownWin\', \'width=800,height=600\')"><br>';
499     echo '<input class="but" type=button value="UPGRADE CLIENT" style="width:150px" onclick="if(confirm(\'UPGRADE ALL PACKAGES ON CLIENT #'.$id.' ?\')) window.open(\'mageupgrade.php?client='.$id.'&ip='.$conn['ip'].'&op=upgrade\', \'ShutdownWin\', \'width=800,height=600\');setTimeout(\'window.location.reload()\',0);"><br>';
500     }
501     else
502     echo '<input class="but" type=button value="WAKE ON LAN" style="width:150px" onclick="if(confirm(\'WAKE CLIENT #'.$id.' ?\')) window.open(\'wake_on_lan.php?mac='.$data['client_serials']['mac'].'\', \'WakeWin\', \'width=200,height=100\')"><br>';
503    
504     echo '<br><center><a href="share/ChangeLog.html" target="_blank">[ChangeLog]</a> <a href="share/FAQ.html" target="_blank">[FAQs]</a></center>';
505    
506   echo '</td></tr></table>';  echo '</td></tr></table>';
507   echo '</form>';  echo '</form>';
508  ?>  ?>

Legend:
Removed from v.1610  
changed lines
  Added in v.2634