Magellan Linux

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

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

revision 2017 by niro, Mon May 9 16:31:38 2011 UTC revision 4898 by niro, Tue May 28 13:56:36 2013 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    include('include/common-functions.php');
5    
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    
14   // get alx version info for  // get alx version info for
15   $alxinfo = sqlfirst('SELECT * FROM client_version WHERE serial='.$id);  $alxinfo = sqlfirst('SELECT * FROM client_version WHERE serial='.$id);
16   $alxos = $alxinfo[os];  $alxos = $alxinfo[os];
17   $alxutils = $alxinfo[utils];  $alxutils = $alxinfo[utils];
18    
19   if($kill==1)  // get gfxdriver
20   {  $gfxinfo = sqlfirst('SELECT * FROM cfg_graphic WHERE serial='.$id);
  foreach($tabs as $t) mysql_query('UPDATE '.$t.' SET serial=-serial WHERE serial='.$id);  
21    
22   echo '<body onload="window.setTimeout(\'window.close()\', 1750)">';  if($kill==1)
23   echo '<table width=100% height=100% style="border:solid black 1px; background-color:#d5e5ff"><tr><td valign=middle align=center>';  {
24     foreach($tabs as $t) mysql_query('UPDATE '.$t.' SET serial=-serial WHERE serial='.$id);
25    
26   if($id<0) echo 'ACTIVATED #'.abs($id);   echo '<body onload="window.setTimeout(\'window.close()\', 1750)">';
27   else echo 'DEACTIVATED #'.$id;   echo '<table width=100% height=100% style="border:solid black 1px; background-color:#d5e5ff"><tr><td valign=middle align=center>';
28    
29   echo '</td></tr></table>';   if($id<0) echo 'ACTIVATED #'.abs($id);
30   return true;   else echo 'DEACTIVATED #'.$id;
31   }  
32     echo '</td></tr></table>';
33     return true;
34    }
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', 'mach64', 'mga', 'openchrome', 'radeon', 's3', 's3virge', 'savage', 'sis', 'trident', 'tseng');   $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   else
45   {   {
46   $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', 'i710', 'intel', 'nv', 'mach64', 'mga', 'openchrome', 'radeon', 's3', 's3virge', 'savage', 'sis', 'trident', 'tseng', 'vmware');
47   }   }
48   $drop['resolution'] = array('640x480', '800x600', '1024x768', '1280x960', '1280x1024', '1360x768', '1366x768', '1400x1050', '1440x900', '1600x1200', '1680x1050', '1280x720', '1920x1080');   if($gfxinfo[module] == 'intel')
  $drop['depth'] = array('24', '16', '8');  
  $drop['mouse'] = array('Auto', 'IMPS/2', 'PS/2');  
  $drop['keyboard'] = array('PC105');  
  $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');  
  $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')  
49   {   {
50   $drop['monitorid'] = 'ignore';   $drop['cfg_graphic_hdmi'] = array('disable', 'enable');
  $drop['refresh_rate'] = array('','60','75','85','100');  
51   }   }
52   else   else
53   {   {
54   $drop['monitorid'] = 'monitorid';   $drop['cfg_graphic_hdmi'] = 'ignore';
  $drop['refresh_rate'] = 'ignore';  
55   }   }
56   $drop['hostname'] = 'bold';  }
57   $drop['session'] = 'bold';  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');
60     $drop['cfg_graphic_hdmi'] = 'ignore';
61    }
62    else
63    {
64     $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');
68    $drop['depth'] = array('24', '16', '8');
69    $drop['mouse'] = array('Auto', 'IMPS/2', 'PS/2');
70    $drop['keyboard'] = array('PC105');
71    if($alxos >= '0.6.0')
72    {
73     $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');
74    }
75    else
76    {
77     $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');
78    }
79    $drop['networking'] = array('dhcp', 'static');
80    // 0.6.0 does not support lpd, ipp and socket printing atm
81    if($alxos>='0.6.0')
82    {
83     $drop['port'] = array('lpt1', 'usb1', 'usb2', 'com1', 'com2');
84     for ($i=0; $i<999; $i++) { $drop['cfg_printers_'.$i.'_ip'] = 'ignore'; }
85     $drop['share'] = 'ignore';
86    }
87    else
88    {
89     $drop['port'] = array('lpt1', 'usb1', 'usb2', 'com1', 'com2', 'lpd', 'socket', 'ipp');
90    }
91    $drop['location'] = sqlarr('SELECT location FROM client_locations', '', 'location');
92    $drop['id'] = 'hidden';
93    $drop['flg_modified'] = '1';
94    $drop['serial'] = 'ignore';
95    if($alxos>='0.5.3')
96    {
97     $drop['monitorid'] = 'ignore';
98     $drop['refresh_rate'] = array('','60','75','85','100');
99    }
100    else
101    {
102     $drop['monitorid'] = 'monitorid';
103     $drop['refresh_rate'] = 'ignore';
104    }
105    $drop['hostname'] = 'bold';
106    $drop['session'] = 'bold';
107    if($alxos>='0.6.0')
108    {
109     $drop['cfg_autostart_session'] = sqlarr('SELECT filename FROM cfg_sessions where serial='.$id, '', 'filename');
110     array_unshift($drop['cfg_autostart_session'], "");
111    }
112    else
113    {
114   $drop['cfg_autostart_session'] = 'filename';   $drop['cfg_autostart_session'] = 'filename';
115   $drop['mtime'] = 'showtime';  }
116   $drop['mac'] = 'show';  $drop['mtime'] = 'showtime';
117   $drop['client_serials_serial'] = 'show';  $drop['mac'] = 'show';
118   $drop['password'] = 'password';  $drop['client_serials_serial'] = 'show';
119   $drop['shell'] = 'password';  $drop['password'] = 'password';
120   $drop['vnc'] = 'password';  $drop['shell'] = 'password';
121   $drop['samba'] = 'password';  $drop['vnc'] = 'password';
122   $drop['station'] = 'password';  $drop['samba'] = 'password';
123   $drop['txt'] = 'txt';  $drop['station'] = 'password';
124   $drop['screensaver'] = array('','blank', 'random', 'ant', 'ant3d', 'apollonian', 'ball', 'bat', 'blot', 'bomb', 'bouboule',  $drop['txt'] = 'txt';
125   'bounce', 'braid', 'bubble', 'bug', 'clock', 'coral', 'crystal', 'daisy', 'dclock', 'decay', 'deco',  $drop['screensaver'] = array('','blank', 'random', 'ant', 'ant3d', 'apollonian', 'ball', 'bat', 'blot', 'bomb', 'bouboule',
126   'demon', 'dilemma', 'discrete', 'dragon', 'drift', 'euler2d', 'eyes', 'fadeplot', 'fiberlamp', 'flag',   'bounce', 'braid', 'bubble', 'bug', 'clock', 'coral', 'crystal', 'daisy', 'dclock', 'decay', 'deco',
127   'flame', 'flow', 'forest', 'galaxy', 'goop', 'grav', 'helix', 'hop', 'hyper', 'ico', 'ifs', 'image',   'demon', 'dilemma', 'discrete', 'dragon', 'drift', 'euler2d', 'eyes', 'fadeplot', 'fiberlamp', 'flag',
128   'juggle', 'julia', 'kaleid', 'kumppa', 'laser', 'life', 'life1d', 'life3d', 'lightning', 'lisa', 'lissie',   'flame', 'flow', 'forest', 'galaxy', 'goop', 'grav', 'helix', 'hop', 'hyper', 'ico', 'ifs', 'image',
129   'loop', 'lyapunov', 'mandelbrot', 'marquee', 'matrix', 'maze', 'mountain', 'munch', 'nose', 'pacman',   'juggle', 'julia', 'kaleid', 'kumppa', 'laser', 'life', 'life1d', 'life3d', 'lightning', 'lisa', 'lissie',
130   'penrose', 'petal', 'petri', 'polyominoes', 'puzzle',  'pyro', 'qix', 'roll',  'rotor', 'scooter', 'shape',   'loop', 'lyapunov', 'mandelbrot', 'marquee', 'matrix', 'maze', 'mountain', 'munch', 'nose', 'pacman',
131   'sierpinski', 'slip', 'solitare', 'space', 'sphere', 'spiral', 'spline', 'star', 'starfish', 'strange',   'penrose', 'petal', 'petri', 'polyominoes', 'puzzle',  'pyro', 'qix', 'roll',  'rotor', 'scooter', 'shape',
132   'swarm', 'swirl', 't3d', 'tetris', 'thornbird', 'tik_tak', 'toneclock', 'triangle', 'tube', 'turtle',   'sierpinski', 'slip', 'solitare', 'space', 'sphere', 'spiral', 'spline', 'star', 'starfish', 'strange',
133   'vines', 'voters', 'wator', 'wire', 'world', 'worm', 'xcl', 'xjack');   'swarm', 'swirl', 't3d', 'tetris', 'thornbird', 'tik_tak', 'toneclock', 'triangle', 'tube', 'turtle',
134   $drop['iface'] = array('eth0', 'wlan0');   'vines', 'voters', 'wator', 'wire', 'world', 'worm', 'xcl', 'xjack');
135   $drop['client_version_os'] = 'show';  $drop['iface'] = array('eth0', 'wlan0');
136   $drop['client_version_utils'] = 'show';  $drop['client_version_os'] = 'show';
137    $drop['client_version_utils'] = 'show';
138   // ACHTUNG!!! wlan_-Felder heißen eigentlich wireless_  
139   $drop['wireless_mode'] = array('', 'managed', 'ad-hoc', 'master', 'repeater', 'secondary', 'monitor', 'auto');  // ACHTUNG!!! wlan_-Felder heißen eigentlich wireless_
140   $drop['wireless_auth_mode'] = array('', 'wep', 'wpa', 'off');  $drop['wireless_mode'] = array('', 'managed', 'ad-hoc', 'master', 'repeater', 'secondary', 'monitor', 'auto');
141   $drop['wireless_key_length'] = array('', '64', '128', '256');  $drop['wireless_auth_mode'] = array('', 'wep', 'wpa', 'wpa2', 'off');
142   $drop['wireless_channel'] = array('', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14');  $drop['wireless_key_length'] = array('', '64', '128', '256');
143   $drop['wireless_frequency'] = array('', '2.412G', '2.417G', '2.422G', '2.427G', '2.432G', '2.437G', '2.442G',  $drop['wireless_channel'] = array('', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14');
144   '2.447G', '2.452G', '2.457G', '2.462G', '2.467G', '2.472G', '2.484G');  $drop['wireless_frequency'] = array('', '2.412G', '2.417G', '2.422G', '2.427G', '2.432G', '2.437G', '2.442G',
145   $drop['wireless_key'] = 'password';   '2.447G', '2.452G', '2.457G', '2.462G', '2.467G', '2.472G', '2.484G');
146   $drop['wireless_key_ascii'] = 'password';  $drop['wireless_key'] = 'password';
147    $drop['wireless_key_ascii'] = 'password';
148   // GGF. NEUEN DATENSATZ EINFÜGEN  
149   if(isset($_POST['do_add']))  // plugin support
150   {  if($alxos>='0.6.0')
151   list($bla,$what) = explode(' ',$_POST['do_add']);  {
152   if($what=='COMMENT') sqladd('cfg_comments', array('serial'=>$id));   for ($i=0; $i<999; $i++) { $drop['cfg_plugins_'.$i.'_plugin'] = 'pluginconfig'; }
153   else if($what=='PRINTER') sqladd('cfg_printers', array('serial'=>$id));   for ($i=0; $i<999; $i++)
154   else if($what=='MODULE') sqladd('cfg_modules', array('serial'=>$id));   {
155   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));   $drop['cfg_plugins_'.$i.'_plugin_array'] = sqlarr('SELECT plugin FROM avail_plugins', '', 'plugin');
156   else if($what=='MENUITEM') sqladd('cfg_other_menuitems', array('serial'=>$id));   array_unshift($drop['cfg_plugins_'.$i.'_plugin_array'], "");
157   }   }
158    }
159    else
160   // GGF. SPEICHERN  {
161   if($_POST['do_upl'])   for ($i=0; $i<999; $i++) { $drop['cfg_plugins_'.$i.'_id'] = 'ignore'; }
162   {   for ($i=0; $i<999; $i++) { $drop['cfg_plugins_'.$i.'_serial'] = 'ignore'; }
163   function postarr($prefix)   for ($i=0; $i<999; $i++) { $drop['cfg_plugins_'.$i.'_plugin'] = 'ignore'; }
164   {  }
165   $prefix.='_';  
166   $prelen = strlen($prefix);  // get current citrix sessions
167    if($alxos>='0.6.0')
168   $arr = array();  {
169   foreach($_POST as $k=>$v)   // split all citrix server into an array to get the first server from list
170   if((substr($k,0,$prelen)==$prefix) && ($v!='KEEPPASS'))   $citrix_query_browser = split(";", $citrix_browseradrs);
171   $arr[substr($k,$prelen)] = stripslashes($v);   exec($wwwroot.'/pnabrowse-wrapper -A '.$citrix_query_browser[0], $returned_citrix_sessions, $retval);
172     if ($retval == 0)
173   return $arr;   {
174   }   $citrix_public_applications = str_replace("'", "", $returned_citrix_sessions);
175     // add an empty value add the first position of the array as session-default
176   foreach($tabs as $k=>$t)   array_unshift($citrix_public_applications, "");
177   {   for ($i=0; $i<999; $i++) { $drop['cfg_sessions_'.$i.'_session'] = $citrix_public_applications; }
  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++;  
  }  
  }  
  }  
178   }   }
179     else
180     {
181     if($retval = 126) echo "pnabrowser-wrapper has no execute permission! please run chmod +x on ".$wwwroot."/pnabrowser-wrapper.";
182     else echo "pnabrowse-wrapper does not run successfully! retval->'".$retval."'<br>";
183     }
184    }
185    
186    // GGF. NEUEN DATENSATZ EINFÜGEN
187    if(isset($_POST['do_add']))
188    {
189     list($bla,$what) = explode(' ',$_POST['do_add']);
190     if($what=='COMMENT') sqladd('cfg_comments', array('serial'=>$id));
191     else if($what=='PRINTER') sqladd('cfg_printers', array('serial'=>$id));
192     else if($what=='MODULE') sqladd('cfg_modules', array('serial'=>$id));
193     else if($what=='SESSION') sqladd('cfg_sessions', array('domain'=>$citrix_domain_name, 'browseradrs'=>$citrix_browseradrs, 'serial'=>$id));
194     else if($what=='MENUITEM') sqladd('cfg_other_menuitems', array('serial'=>$id));
195     else if($what=='PLUGIN') sqladd('cfg_plugins', array('serial'=>$id));
196    }
197    
198    
199    // GGF. SPEICHERN
200    if($_POST['do_upl'])
201    {
202     function postarr($prefix)
203     {
204     $prefix.='_';
205     $prelen = strlen($prefix);
206    
207     $arr = array();
208     foreach($_POST as $k=>$v)
209     if((substr($k,0,$prelen)==$prefix) && ($v!='KEEPPASS'))
210     $arr[substr($k,$prelen)] = stripslashes($v);
211    
212   // EINLESEN DER DATEN AUS SQL-TABELLEN   return $arr;
  foreach($tabs as $k=>$t)  
  {  
  if($multi[$k]) $data[$t] = sqlarr('SELECT * FROM '.$t.' WHERE serial='.$id);  
  else $data[$t] = sqlfirst('SELECT * FROM '.$t.' WHERE serial='.$id);  
213   }   }
214    
215   // ANZEIGEN - KLAPPFUNKTIONEN   foreach($tabs as $k=>$t)
  $absnames = array();  
   
  function openabs($heading, $helpfile='')  
216   {   {
217   global $absnames;   if(!$multi[$k]) mysql_query('UPDATE '.$t.' SET '.updatestr(postarr($t)).' WHERE serial='.$id);
  $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">';  
  }  
218   else   else
219   {   {
220   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;
221   if($helpfile!='') echo ' <a href="JavaScript:showhelp(\''.$helpfile.'\')" title="HELP">[?]</a>';   while(isset($_POST[$t.'_'.$i.'_id']))
222   echo '<br><div id="sch_absatz_'.$heading.'" style="position:absolute; top:0px; visibility:hidden">';   {
223     if($_POST[$t.'_'.$i.'_delete'])
224     mysql_query('DELETE FROM '.$t.' WHERE serial='.$id.' AND id='.$_POST[$t.'_'.$i.'_id']);
225     else
226     mysql_query('UPDATE '.$t.' SET '.updatestr(postarr($t.'_'.$i)).' WHERE serial='.$id.' AND id='.$_POST[$t.'_'.$i.'_id']);
227     $i++;
228     }
229   }   }
230   }   }
231    
232     // reload site
233     header("location: show.php?id=".$id);
234    }
235    
236    // EINLESEN DER DATEN AUS SQL-TABELLEN
237    foreach($tabs as $k=>$t)
238    {
239     if($multi[$k]) $data[$t] = sqlarr('SELECT * FROM '.$t.' WHERE serial='.$id);
240     else $data[$t] = sqlfirst('SELECT * FROM '.$t.' WHERE serial='.$id);
241    }
242    
243    // ANZEIGEN - KLAPPFUNKTIONEN
244    $absnames = array();
245    
246    function openabs($heading, $helpfile='')
247    {
248     global $absnames;
249     $absnames[] = $heading;
250    
251   function closeabs()   // <AufZuLink> <Bild/> <Heading/> </AufZuLink><BR/> <Absatz>
252    
253     if( $_SESSION['openclose'][$heading] )
254   {   {
255   // </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>';
256     if($helpfile!='') echo ' <a href="JavaScript:showhelp(\''.$helpfile.'\')" title="HELP">[?]</a>';
257   echo '</div><br>';   echo '<br><div id="sch_absatz_'.$heading.'" style="top:0px; visibility:visible">';
258   }   }
259     else
260     {
261     echo '<a href="JavaScript:openclose(\''.$heading.'\',1);"><img border="0" src="pics/plus.gif" title="OPEN" id="sch_bild_'.$heading.'"> <b>['.$heading.']</b></a>';
262     if($helpfile!='') echo ' <a href="JavaScript:showhelp(\''.$helpfile.'\')" title="HELP">[?]</a>';
263     echo '<br><div id="sch_absatz_'.$heading.'" style="position:absolute; top:0px; visibility:hidden">';
264     }
265    }
266    
267    function closeabs()
268    {
269     // </Absatz> <BR/>
270    
271     echo '</div><br>';
272    }
273    
274   // ANZEIGEN  
275    // ANZEIGEN
276   function parsearr($name, $arr, $del=false, $wireless=false)  
277    function parsearr($name, $arr, $del=false, $wireless=false)
278    {
279     global $drop;
280     global $id;
281     global $alxos;
282    
283     $parts = explode('_',$name); $helpfile='help.php?page='.$parts[1];
284     openabs($name, $helpfile);
285     echo '<table class="keytab">';
286    
287     foreach($arr as $k=>$v)
288   {   {
289   global $drop;   if( (substr($k,0,9)=='wireless_') xor $wireless ) Continue;
290   global $id;  
291   global $alxos;   $d = $drop[$name.'_'.$k]; if($d==null) $d = $drop[$k];
292     $k = str_replace('wireless_', '', $k);
293   $parts = explode('_',$name); $helpfile='help.php?page='.$parts[1];   $k2 = $k;
  openabs($name, $helpfile);  
  echo '<table class="keytab">';  
   
  foreach($arr as $k=>$v)  
  {  
  if( (substr($k,0,9)=='wireless_') xor $wireless ) Continue;  
   
  $d = $drop[$name.'_'.$k]; if($d==null) $d = $drop[$k];  
  $k = str_replace('wireless_', '', $k);  
  $k2 = $k;  
294    
295   //replace some drivers on 0.5.3 or higher   //replace some drivers on 0.5.3 or higher
296   if($alxos >= '0.5.3')   if($alxos >= '0.5.3')
297     {
298     if($v == 'i810')
299   {   {
300   if($v == 'i810')   echo '<br><font color="#FF0000">Replaced "i810" with "intel" - Please press SAVE!</font><br>';
301   {   $v='intel';
302   echo '<br><font color="#FF0000">Replaced "i810" with "intel" - Please press SAVE!</font><br>';   }
303   $v='intel';   if($v == 'r128')
304   }   {
305   if($v == 'r128')   echo '<br><font color="#FF0000">Replaced "r128" with "vesa" - Please press SAVE!</font><br>';
306   {   $v='vesa';
  echo '<br><font color="#FF0000">Replaced "r128" with "vesa" - Please press SAVE!</font><br>';  
  $v='vesa';  
  }  
   
  if($v == 'via')  
  {  
  echo '<br><font color="#FF0000">Replaced "via" with "openchrome" - Please press SAVE!</font><br>';  
  $v='openchrome';  
  }  
307   }   }
308    
309   # tell something about vesa   if($v == 'via')
310   if ($v == 'vesa') echo '<br><font color="#FF0000">Warning: "vesa" graphic module doesn\'t support any resolutions higher than 1024x786x16@60hz!</font><br>';   {
311     echo '<br><font color="#FF0000">Replaced "via" with "openchrome" - Please press SAVE!</font><br>';
312     $v='openchrome';
313     }
314     }
315     if($alxos >= '0.6.2')
316     {
317     if($v == 'via')
318     {
319     echo '<br><font color="#FF0000">Replaced "via" with "unichrome" - Please press SAVE!</font><br>';
320     $v='unichrome';
321     }
322     if($v == 'openchrome')
323     {
324     echo '<br><font color="#FF0000">Replaced "openchrome" with "unichrome" - Please press SAVE!</font><br>';
325     $v='unichrome';
326     }
327     }
328    
329     # tell something about vesa
330     if ($v == 'vesa') echo '<br><font color="#FF0000">Warning: "vesa" graphic module doesn\'t support any resolutions higher than 1024x786x16@60hz!</font><br>';
331    
332    
333   if(is_array($d))   if(is_array($d))
334     {
335     echo '<tr><td class="key">'.$k2.'</td><td>= <select style="width:144px" name="'.$name.'_'.$k.'">';
336     foreach($d as $di) if($v==$di) echo '<option selected>'.$di; else echo '<option>'.$di;
337     echo '</select></td></tr>';
338     }
339     else if($d=='hidden') echo '<tr><td colspan=2><input type=hidden name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';
340     else if($d=='1') echo '<tr><td colspan=2><input type=hidden name="'.$name.'_'.$k.'" value="1"></td></tr>';
341     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>';
342     else if($d=='pluginconfig')
343     {
344     $dplugin = $drop[$name.'_'.$k.'_array']; if($dplugin==null) $dplugin = $drop[$k];
345     if(is_array($dplugin))
346   {   {
347   echo '<tr><td class="key">'.$k2.'</td><td>= <select style="width:144px" name="'.$name.'_'.$k.'">';   echo '<tr><td class="key">'.$k2.'</td><td>= <select style="width:144px" name="'.$name.'_'.$k.'">';
348   foreach($d as $di) if($v==$di) echo '<option selected>'.$di; else echo '<option>'.$di;   foreach($dplugin as $di) if($v==$di) echo '<option selected>'.$di; else echo '<option>'.$di;
349   echo '</select></td></tr>';   echo '</select></td></tr>';
350   }   }
351   else if($d=='hidden') echo '<tr><td colspan=2><input type=hidden name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';   // $v contains the pluginname, get the configure flag
352   else if($d=='1') echo '<tr><td colspan=2><input type=hidden name="'.$name.'_'.$k.'" value="1"></td></tr>';   $pflag = sqlfirst('SELECT configflag FROM avail_plugins WHERE plugin="'.$v.'"');
353   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>';   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>';
354   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>';   }
355   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=='bold') echo '<tr><td class="key">'.$k2.'</td><td>= <input style="width:144px;font-weight:bold" name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';
356   else if($d=='show') echo '<tr><td class="key">'.$k2.'</td><td>= <b>'.$v.'</b></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>';
357   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=='show') echo '<tr><td class="key">'.$k2.'</td><td>= <b>'.$v.'</b></td></tr>';
358   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=='showtime') echo '<tr><td class="key">'.$k2.'</td><td>= <b>'.date('d.m.y - H:i:s', $v).'</b></td></tr>';
359   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' && $v=='') echo '<tr><td class="key">'.$k2.'</td><td>= <input type=password style="width:144px" name="'.$name.'_'.$k.'" value=""></td></tr>';
360   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=='password') echo '<tr><td class="key">'.$k2.'</td><td>= <input type=password style="width:144px" name="'.$name.'_'.$k.'" value="KEEPPASS"></td></tr>';
361   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=='txt') echo '<tr><td colspan=2><textarea style="width:240px; background-color:#d5e5ff" rows=6 name="'.$name.'_'.$k.'">'.$v.'</textarea></td></tr>';
362   }   else if($d!='ignore') echo '<tr><td class="key">'.$k2.'</td><td>= <input style="width:144px" name="'.$name.'_'.$k.'" value="'.$v.'"></td></tr>';
363     }
364   if($del) echo '<tr><td class="key">delete</td><td>=<input type=checkbox name="'.$name.'_delete" value="1"></td></tr>';  
365   echo '</table>';   if($del) echo '<tr><td class="key">delete</td><td>=<input type=checkbox name="'.$name.'_delete" value="1"></td></tr>';
366   closeabs();   echo '</table>';
367     closeabs();
368    
369     if($name=='cfg_network' && !$wireless) parsearr($name.'_wireless', $arr, $del, true);
370    }
371    function parsearrs($name, $arr)
372    {
373     foreach($arr as $k=>$a)
374     parsearr($name.'_'.$k, $a, true);
375    }
376    
377    ?><head>
378    <title>ALX Config</title>
379    <style>
380     body,table { font-family:Tahoma; font-size:10pt }
381     a { color:#000000; text-decoration:none; }
382     .key { width:85px }
383     .keytab, input, textarea, select, option { font-size:8pt; font-family:Tahoma }
384     .but { font-size:10pt; font-family:Tahoma; height:23px }
385    </style>
386    <script type="text/javascript" src="js/jquery-1.2.6.min.js"></script>
387    <script language="JavaScript" src="openclose_ajax.js"></script>
388    <script language="JavaScript">
389    
390     // opens an url and shows retval in a javascript-alert on current site
391     function urlopen(url,typ) {
392     var $url = url.split("?");
393     $.ajax({type:""+typ+"",url:$url[0],data:$url[1],cache:false,success:function(data){ alert(data); }});
394     }
395     function plugin(name,id) { window.open('plugin.php?plugin='+name+'&id='+id, '', 'width=350,height=180'); }
396    
397    /* ignore this atm, not always working, sometime open does not work
398     function openclose(nummer, act)
399     {
400     var bild = document.images['sch_bild_'+nummer];
401     var absatz = document.all['sch_absatz_'+nummer].style;
402     var senden = false;
403    
404     $("#sch_absatz_"+nummer).toggle(0, function(){
405     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'});}
406     });
407     if(act<=1){ $("#sch_bild_"+nummer).attr({title:'CLOSE',src:'pics/minus.gif'}); }else{ $("#sch_bild_"+nummer).attr({title:'OPEN',src:'pics/plus.gif'}); };
408     }
409    */
410     function openclose(nummer, act)
411     {
412     var bild = document.images['sch_bild_'+nummer];
413     var absatz = document.all['sch_absatz_'+nummer].style;
414     var senden = false;
415    
416   if($name=='cfg_network' && !$wireless) parsearr($name.'_wireless', $arr, $del, true);   if(bild.title == 'OPEN')
417   }   {
418   function parsearrs($name, $arr)   if(act<=1)
  {  
  foreach($arr as $k=>$a)  
  parsearr($name.'_'.$k, $a, true);  
  }  
   
  ?><head>  
  <title>ALX Config</title>  
  <style>  
  body,table { font-family:Tahoma; font-size:10pt }  
  a { color:#000000; text-decoration:none; }  
  .key { width:85px }  
  .keytab, input, textarea, select, option { font-size:8pt; font-family:Tahoma }  
  .but { font-size:10pt; font-family:Tahoma; height:23px }  
  </style>  
  <script language="JavaScript" src="openclose_ajax.js"></script>  
  <script language="JavaScript">  
   
  function openclose(nummer, act)  
  {  
  var bild = document.images['sch_bild_'+nummer];  
  var absatz = document.all['sch_absatz_'+nummer].style;  
  var senden = false;  
   
  if(bild.title == 'OPEN')  
419   {   {
420   if(act<=1)   absatz.visibility = 'visible';
421   {   absatz.position = '';
422   absatz.visibility = 'visible';   bild.title = 'CLOSE';
423   absatz.position = '';   bild.src = 'pics/minus.gif';
424   bild.title = 'CLOSE';   senden = true;
425   bild.src = 'pics/minus.gif';   act = 0;
  senden = true;  
  act = 0;  
  }  
426   }   }
427   else   }
428     else
429     {
430     if(act>=1)
431   {   {
432   if(act>=1)   absatz.visibility = 'hidden';
433   {   absatz.position = 'absolute';
434   absatz.visibility = 'hidden';   bild.title = 'OPEN';
435   absatz.position = 'absolute';   bild.src = 'pics/plus.gif';
436   bild.title = 'OPEN';   senden = true;
437   bild.src = 'pics/plus.gif';   act = 2;
  senden = true;  
  act = 2;  
  }  
438   }   }
439     }
  if(senden) sendopenclose(nummer,act);  
  }  
   
  function showhelp(name)  
  { window.open(name, 'HelpWin', 'width=620,height=500,scrollbars=yes'); }  
   
  </script>  
  </head>  
   
  <body><?  
440    
441     if(senden) sendopenclose(nummer,act);
442   //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.'">';  
443    
444   // ANZEIGEN => NON-MULTI TABELLEN   function showhelp(name)
445   echo '<table><tr><td valign=top width="300">';   { window.open(name, 'HelpWin', 'width=620,height=500,scrollbars=yes'); }
446    
447   echo '<b style="font-size:6pt">';  </script>
448   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>';  
449    
450   foreach($tabs as $k=>$t) if(!$multi[$k]) parsearr($t, $data[$t]);  <body><?
451    
452   // ANZEIGEN => MULTI TABELLEN  echo '<form action="show.php" method="post" onreset="return confirm(\'UNDO CHANGES?\')">';
453   echo '</td><td valign=top width="300">';  echo '<input type=hidden name="do_upl" value="1">';
454    echo '<input type=hidden name="id" value="'.$id.'">';
455    
456   foreach($tabs as $k=>$t) if($multi[$k]) parsearrs($t, $data[$t]);  // ANZEIGEN => NON-MULTI TABELLEN
457    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>';  
458    
459   // ANZEIGEN => NAVI   echo '<b style="font-size:6pt">';
460   echo '</td><td valign=top>';   echo '<a href="JavaScript:opencloseall(0);" title="OPEN ALL"><img src="pics/plus.gif" border="0"> OPEN...</a> ';
461     echo '<a href="JavaScript:opencloseall(2);" title="CLOSE ALL"><img src="pics/minus.gif" border="0"> CLOSE...</a> ALL';
462     echo '</b><br><br>';
463    
464   // STATUS BESTIMMEN (ON/OFF)   foreach($tabs as $k=>$t) if(!$multi[$k]) parsearr($t, $data[$t]);
  $conn = sqlfirst('SELECT * FROM state_connected WHERE serial='.$id);  
  $state = 'Off';  
  if(count($conn)>0)  
  {  
 // passthru($pingcmd." ".$conn['ip']." &> /dev/null && exit 0 || exit 1",$retval);  
  if($retval==0) $state = 'On';  
  }  
465    
466    // ANZEIGEN => MULTI TABELLEN
467    echo '</td><td valign=top width="300">';
468    
469   echo '<img src="pics/logo2.jpg"><br><br>';   foreach($tabs as $k=>$t) if($multi[$k]) parsearrs($t, $data[$t]);
470    
471   echo '<input class="but" type=submit value="SAVE" style="width:150px"><br><br>';   echo '<script language="JavaScript">';
472     echo 'function opencloseall(act) { ';
473    
474   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD COMMENT" style="width:150px"><br>';   foreach($absnames as $absname)
475   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD PRINTER" style="width:150px"><br>';   echo 'openclose("'.$absname.'", act); ';
  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 MODULE" style="width:150px"><br>';  
  echo '<input class="but" type=submit name="do_add" value="SAVE+ADD MENUITEM" style="width:150px"><br><br>';  
476    
477     echo '}</script>';
478    
479   if($id>0) $KILLCAP='DEACTIVATE'; else $KILLCAP='ACTIVATE';  // ANZEIGEN => NAVI
480   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 '</td><td valign=top>';
  echo '<input class="but" type=button value="IMPORT FROM..." style="width:150px" onclick="location.href=\'import.php?id='.$id.'\'"><br>';  
  echo '<input class="but" type=reset value="UNDO CHANGES" style="width:150px"><br><br>';  
481    
482   $davor  = sqlfirst('SELECT mac FROM client_serials WHERE serial='.($id-1),'mac')!=null; if($davor) $disdavor=''; else $disdavor = 'disabled=1';   // STATUS BESTIMMEN (ON/OFF)
483   $danach = sqlfirst('SELECT mac FROM client_serials WHERE serial='.($id+1),'mac')!=null; if($danach) $disdanach=''; else $disdanach = 'disabled=1';   $conn = sqlfirst('SELECT * FROM state_connected WHERE serial='.$id);
484     $state = 'Off';
485     if(count($conn)>0)
486     {
487     if($retval==0) $state = 'On';
488     }
489    
490   echo '<input class="but" type=button '.$disdavor.' value="<" style="width:30px" onclick="location.href=\'show.php?id='.($id-1).'\'">';   echo '<img src="pics/logo2.jpg"><br><br>';
  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>';  
491    
492   echo '<br><br>';   echo '<input class="but" type=submit value="SAVE" style="width:150px"><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')  
  {  
  echo '<u>IP:</u> '.$conn['ip'].'<br><br>';  
  $pubkey = mysql_query('select public_key from ssh_auth_clients where serial='.$id.'');  
  while ($row = mysql_fetch_row ($pubkey)) {  
  # schreiben der .ssh/known_hosts file mit dem public rsa key des client,  
  # um die "yes" abfrage zu vermeiden  
  $hostfile = fopen ($home."/.ssh/known_hosts","w");  
  fwrite($hostfile,$conn['ip']." ".$row[0],strlen($row[0])+strlen($conn['ip'])+1);  
  fclose($hostfile);  
493    
494   $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}"\'');   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD COMMENT" style="width:150px"><br>';
495   $osver = explode(':',$osver);   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD PRINTER" style="width:150px"><br>';
496   }   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD SESSION" style="width:150px"><br>';
497   if($osver[0] == '') $osver[0]='unkown';   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD MODULE" style="width:150px"><br>';
498   if($osver[1] == '') $osver[1]='unkown';   echo '<input class="but" type=submit name="do_add" value="SAVE+ADD MENUITEM" style="width:150px"><br>';
499     if($alxos >= '0.6.0')
500   # update os string in database   {
501   if($alxos == '' && $osver[0] >= '0.5.3')   echo '<input class="but" type=submit name="do_add" value="INSTALL PLUGIN" style="width:150px"><br>';
502   {   }
503   mysql_query('insert into client_version(serial,os,utils) values("'.$id.'","'.$osver[0].'","'.$osver[1].'")   echo '<br>';
  on duplicate key update os="'.$osver[0].'", utils="'.$osver[1].'"');  
  # reload the site  
  echo '<script type="text/javascript">setTimeout(\'window.location.reload()\',0);</script>';  
  }  
504    
505   echo '<u>OS:</u> '.$osver[0].'<br>';   if($id>0) $KILLCAP='DEACTIVATE'; else $KILLCAP='ACTIVATE';
506   echo '<u>Utils:</u> '.$osver[1].'<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>';
507     echo '<input class="but" type=button value="IMPORT FROM..." style="width:150px" onclick="location.href=\'import.php?id='.$id.'\'"><br>';
508     echo '<input class="but" type=reset value="UNDO CHANGES" style="width:150px"><br><br>';
509    
510   if($osver[0] <> 'unkown')   $davor  = sqlfirst('SELECT mac FROM client_serials WHERE serial='.($id-1),'mac')!=null; if($davor) $disdavor=''; else $disdavor = 'disabled=1';
511   {   $danach = sqlfirst('SELECT mac FROM client_serials WHERE serial='.($id+1),'mac')!=null; if($danach) $disdanach=''; else $disdanach = 'disabled=1';
512   //write them to database  
513   }   echo '<input class="but" type=button '.$disdavor.' value="<" style="width:30px" onclick="location.href=\'show.php?id='.($id-1).'\'">';
514     echo '<input class="but" type=button value="REFRESH" style="width:90px" onclick="location.href=\'show.php?id='.$id.'\'">';
515     echo '<input class="but" type=button '.$disdanach.' value=">" style="width:30px" onclick="location.href=\'show.php?id='.($id+1).'\'">';
516     echo '<br><input class="but" type=button value="INDEX" style="width:150px; font-weight:bold" onclick="location.href=\'index.php\'"><br><br>';
517    
518     echo '<br>';
519     echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff"><b>';
520     if($id<0) echo '<b>DEACTIVATED!</b><br><br>';
521     echo '<u>Serial:</u>&nbsp;&nbsp;#'.$id.'<br>';
522     echo '<u>Stand:</u>&nbsp;&nbsp;'.date('H:i:s').'<br>';
523     echo '<u>Status:</u> <img src="pics/'.strtolower($state).'line.gif" align=top> '.$state.'line<br>';
524     if($state=='On')
525     {
526     echo '<u>IP:</u> '.$conn['ip'].'<br><br>';
527     if($alxos >= '0.6.0')
528     {
529     $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']);
530   }   }
531     else
532     {
533     $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']);
534     }
535     $osver = explode(':',$osver[1]);
536     if($osver[0] == '') $osver[0]='unknown';
537     if($osver[1] == '') $osver[1]='unknown';
538    
539   echo '</b></div>';   # update os string in database
540   //echo '<br><br>';   if($alxos == '' && $osver[0] >= '0.5.3')
541     {
542     mysql_query('insert into client_version(serial,os,utils) values("'.$id.'","'.$osver[0].'","'.$osver[1].'")
543     on duplicate key update os="'.$osver[0].'", utils="'.$osver[1].'"');
544     # reload the site
545     echo '<script type="text/javascript">setTimeout(\'window.location.reload()\',0);</script>';
546     }
547    
548     echo '<u>OS:</u> '.$osver[0].'<br>';
549     echo '<u>Utils:</u> '.$osver[1].'<br>';
550    
551   if($state=='On')   if($osver[0] <> 'unknown')
552   {   {
553   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>';   //write them to database
554   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>';   }
555   echo '<br>';   }
556                   echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff" align="center"><b>';  
557                  echo 'Remote Shadow:</b></div>';   echo '</b></div>';
558   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>';  
559   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>';   if($state=='On')
560     {
561     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>';
562     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>';
563     echo '<br>';
564    
565     if($alxos >= '0.6.0')
566     {
567     echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff" align="center"><b>';
568     echo 'Hardware Detection:</b></div>';
569     echo '<input class="but" type=button value="LAN" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=lan\',\'POST\');">';
570     echo '<input class="but" type=button value="WLAN" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=wlan\',\'POST\');">';
571     echo '<input class="but" type=button value="VGA" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=vga\',\'POST\');">';
572   echo '<br>';   echo '<br>';
573                   echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff" align="center"><b>';   echo '<input class="but" type=button value="PRN" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=printer\',\'POST\');">';
574                  echo 'Client Update:</b></div>';   echo '<input class="but" type=button value="HRDW" style="width:50px" onclick="javascript:urlopen(\'include/hwinfo.php?ip='.$conn['ip'].'&cmd=system\',\'POST\');">';
575   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 '<br><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\');setTimeout(\'window.location.reload()\',0);"><br>';  
576   }   }
  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>';  
577    
578   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>';
579     echo 'Remote Shadow:</b></div>';
580     echo '<input class="but" type=button value="VNC" style="width:75px" onclick="window.open(\'vncviewer.php?ip='.$conn['ip'].'\', \'VncViewer\', \'width=200,height=100\')">';
581     echo '<input class="but" type=button value="SSH" style="width:75px" onclick="window.open(\'mindterm.php?ip='.$conn['ip'].'\', \'MindTerm\', \'width=200,height=100\')">';
582     echo '<br><br>';
583     echo '<div style="border:solid black 1px; padding:5px; background-color:#d5e5ff" align="center"><b>';
584     echo 'Client Update:</b></div>';
585     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>';
586     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>';
587     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>';
588     }
589     else
590     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>';
591    
592     echo '<br><center><a href="share/ChangeLog.html" target="_blank">[ChangeLog]</a> <a href="share/FAQ.html" target="_blank">[FAQs]</a></center>';
593    
594   echo '</td></tr></table>';  echo '</td></tr></table>';
595   echo '</form>';  echo '</form>';
596  ?>  ?>

Legend:
Removed from v.2017  
changed lines
  Added in v.4898