Magellan Linux

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

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

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

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