Login authentication for xCAT-web now works, using Jarrod's code
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2383 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
@@ -10,20 +10,20 @@
 | 
			
		||||
<UL>
 | 
			
		||||
  <LI><A href="man1/xcat.1.html">xCAT 2 Man Pages</A>
 | 
			
		||||
  <LI><A href="man5/xcatdb.5.html">xCAT 2 Database Table Descriptions</A>
 | 
			
		||||
  <LI><A href="xCAT2.0.pdf">xCAT 2.0 Linux Cookbook</A> - getting started with <FONT size="+1">installing</FONT> and setting up xCAT on Linux
 | 
			
		||||
  <LI><A href="xCAT2onAIX.pdf">xCAT 2.0 AIX Cookbook</A> - getting started with installing and setting up xCAT on AIX
 | 
			
		||||
  <LI><A href="xCAT2.pdf">xCAT 2 Linux Cookbook</A> - getting started with installing and setting up xCAT on Linux
 | 
			
		||||
  <LI><A href="xCAT2onAIX.pdf">xCAT 2 AIX Cookbook</A> - getting started with installing and setting up xCAT on AIX
 | 
			
		||||
</UL>
 | 
			
		||||
 | 
			
		||||
<H2>xCAT 2 on the Internet</H2>
 | 
			
		||||
<UL>
 | 
			
		||||
  <LI><A href="http://xcat.sf.net/xCAT2-Install-Guide.pdf">Tutorial for installing xCAT and deploying a stateless node</A>
 | 
			
		||||
  <LI><A href="http://xcat.sourceforge.net/yum/">Download xCAT 2.0</A>
 | 
			
		||||
  <LI><A href="http://xcat.sourceforge.net/">xCAT 2 web site</A>
 | 
			
		||||
  <LI><A href="http://xcat.sourceforge.net/yum/download.html">Download xCAT 2</A>
 | 
			
		||||
  <LI><A href="https://sourceforge.net/projects/xcat/">The xCAT Project on SourceForge</A>
 | 
			
		||||
  <LI><A href="http://xcat.svn.sourceforge.net/svnroot/xcat/xcat-core/trunk/">xCAT 2.0 Source in Subversion</A>
 | 
			
		||||
  <LI><A href="http://xcat.wiki.sourceforge.net/">xCAT 2.0 Wiki</A>
 | 
			
		||||
  <LI><A href="https://sourceforge.net/tracker/?group_id=208749&atid=1006945">xCAT 2.0 Bugs in Tracker</A>
 | 
			
		||||
  <LI><A href="http://xcat.wiki.sourceforge.net/">xCAT 2 Wiki</A>
 | 
			
		||||
  <LI><A href="http://xcat.svn.sourceforge.net/svnroot/xcat/xcat-core/trunk/">xCAT 2 Source in Subversion</A>
 | 
			
		||||
  <LI><A href="https://sourceforge.net/tracker/?group_id=208749&atid=1006945">xCAT 2 Bugs in Tracker</A>
 | 
			
		||||
  <LI><A href="http://xcat.org/mailman/listinfo/xcat-user">xCAT Mailing List</A>
 | 
			
		||||
  <LI>xCAT 2.0 Open Source License: <A href="http://www.opensource.org/licenses/eclipse-1.0.php">Eclipse Public License</A>
 | 
			
		||||
  <LI>xCAT 2 Open Source License: <A href="http://www.opensource.org/licenses/eclipse-1.0.php">Eclipse Public License</A>
 | 
			
		||||
  <LI>xCAT 1.3 Links at <A href="http://xcat.org/">xcat.org</A>
 | 
			
		||||
</UL>
 | 
			
		||||
</BODY>
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ $TOPDIR = '..';
 | 
			
		||||
require_once "$TOPDIR/lib/functions.php";
 | 
			
		||||
 | 
			
		||||
insertHeader('xCAT Database', array('db.css'),
 | 
			
		||||
			array('db.js',"$TOPDIR/jq/jquery.min.js","$TOPDIR/jq/jquery.jeditable.mini.js"),
 | 
			
		||||
			array('db.js',"$TOPDIR/jq/jquery.jeditable.mini.js"),
 | 
			
		||||
			array('config','db'));
 | 
			
		||||
 | 
			
		||||
echo "<div id=content align=center>\n";
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ require_once "$TOPDIR/lib/functions.php";
 | 
			
		||||
 | 
			
		||||
insertHeader('Preferences', NULL, NULL, array('config','prefs'));
 | 
			
		||||
 | 
			
		||||
echo "<FORM NAME=prefs onsubmit='return false'><TABLE class=inner_table cellspacing=0 cellpadding=5><TBODY>\n";
 | 
			
		||||
echo "<FORM NAME=prefs onsubmit='return false'><TABLE cellspacing=0 cellpadding=5><TBODY>\n";
 | 
			
		||||
 | 
			
		||||
//foreach ($_COOKIE as $key => $value) { echo "<p>$key: {$_COOKIE[$key]}</p>\n"; }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/images/throbber.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/222222_11x11_icon_arrows_leftright.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 58 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/222222_11x11_icon_arrows_updown.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 56 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/222222_11x11_icon_close.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 62 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/222222_11x11_icon_doc.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 64 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/222222_11x11_icon_folder_closed.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 61 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/222222_11x11_icon_folder_open.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 61 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/222222_11x11_icon_minus.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 56 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/222222_11x11_icon_plus.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 61 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/222222_11x11_icon_resize_se.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 61 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/222222_7x7_arrow_down.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 52 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/222222_7x7_arrow_left.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 53 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/222222_7x7_arrow_right.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 53 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/222222_7x7_arrow_up.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 52 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/888888_11x11_icon_arrows_leftright.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 58 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/888888_11x11_icon_arrows_updown.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 56 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/888888_11x11_icon_close.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 62 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/888888_11x11_icon_doc.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 64 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/888888_11x11_icon_folder_closed.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 61 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/888888_11x11_icon_folder_open.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 61 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/888888_11x11_icon_minus.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 56 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/888888_11x11_icon_plus.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 61 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/888888_7x7_arrow_down.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 52 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/888888_7x7_arrow_left.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 53 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/888888_7x7_arrow_right.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 53 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/888888_7x7_arrow_up.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 52 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/8ab9ff_40x100_textures_02_glass_50.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 219 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/d8d8d8_40x100_textures_02_glass_90.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 221 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/e0e0e0_40x100_textures_02_glass_80.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 214 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/f3f3f3_40x100_textures_01_flat_0.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 180 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/ffffff_11x11_icon_arrows_leftright.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 58 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/ffffff_11x11_icon_arrows_updown.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 56 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/ffffff_11x11_icon_close.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 62 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/ffffff_11x11_icon_doc.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 64 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/ffffff_11x11_icon_folder_closed.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 61 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/ffffff_11x11_icon_folder_open.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 61 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/ffffff_11x11_icon_minus.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 56 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/ffffff_11x11_icon_plus.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 61 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/ffffff_7x7_arrow_down.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 52 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/ffffff_7x7_arrow_left.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 53 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/ffffff_7x7_arrow_right.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 53 B  | 
							
								
								
									
										
											BIN
										
									
								
								xCAT-web/jq/theme/images/ffffff_7x7_arrow_up.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 52 B  | 
							
								
								
									
										832
									
								
								xCAT-web/jq/theme/jquery-ui-theme.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,832 @@
 | 
			
		||||
/*
 | 
			
		||||
 * jQuery UI screen structure and presentation
 | 
			
		||||
 * This CSS file was generated by ThemeRoller, a Filament Group Project for jQuery UI
 | 
			
		||||
 * Author: Scott Jehl, scott@filamentgroup.com, http://www.filamentgroup.com
 | 
			
		||||
 * Visit ThemeRoller.com
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Note: If your ThemeRoller settings have a font size set in ems, your components will scale according to their parent element's font size.
 | 
			
		||||
 * As a rule of thumb, set your body's font size to 62.5% to make 1em = 10px.
 | 
			
		||||
 * body {font-size: 62.5%;}
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*UI accordion*/
 | 
			
		||||
.ui-accordion {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	font-family: Lucida Grande, Lucida Sans, Arial, sans-serif;
 | 
			
		||||
	font-size: 1.2em;
 | 
			
		||||
	border-bottom: 1px solid #cccccc;
 | 
			
		||||
}
 | 
			
		||||
.ui-accordion-group {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	border: 1px solid #cccccc;
 | 
			
		||||
	border-bottom: none;
 | 
			
		||||
}
 | 
			
		||||
.ui-accordion-header {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	cursor: pointer;
 | 
			
		||||
	background: #e0e0e0 url(images/e0e0e0_40x100_textures_02_glass_80.png) 0 50% repeat-x;
 | 
			
		||||
}
 | 
			
		||||
.ui-accordion-header a {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	display: block;
 | 
			
		||||
	font-size: 1em;
 | 
			
		||||
	font-weight: normal;
 | 
			
		||||
	text-decoration: none;
 | 
			
		||||
	padding: .5em .5em .5em 1.7em;
 | 
			
		||||
	color: #444444;
 | 
			
		||||
	background: url(images/888888_7x7_arrow_right.gif) .5em 50% no-repeat;
 | 
			
		||||
}
 | 
			
		||||
.ui-accordion-header a:hover {
 | 
			
		||||
	background: url(images/222222_7x7_arrow_right.gif) .5em 50% no-repeat;
 | 
			
		||||
	color: #111111;
 | 
			
		||||
}
 | 
			
		||||
.ui-accordion-header:hover {
 | 
			
		||||
	background: #d8d8d8 url(images/d8d8d8_40x100_textures_02_glass_90.png) 0 50% repeat-x;
 | 
			
		||||
	color: #111111;
 | 
			
		||||
}
 | 
			
		||||
.selected .ui-accordion-header, .selected .ui-accordion-header:hover {
 | 
			
		||||
	background: #8ab9ff url(images/8ab9ff_40x100_textures_02_glass_50.png) 0 50% repeat-x;
 | 
			
		||||
}
 | 
			
		||||
.selected .ui-accordion-header a, .selected .ui-accordion-header a:hover {
 | 
			
		||||
	color: #000000;
 | 
			
		||||
	background: url(images/ffffff_7x7_arrow_down.gif) .5em 50% no-repeat;
 | 
			
		||||
}
 | 
			
		||||
.ui-accordion-content {
 | 
			
		||||
	padding: 1.5em 1.7em;	
 | 
			
		||||
	background: #f3f3f3 url(images/f3f3f3_40x100_textures_01_flat_0.png) 0 0 repeat-x;
 | 
			
		||||
	color: #362b36;
 | 
			
		||||
	font-size: 1em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*UI tabs*/
 | 
			
		||||
.ui-tabs-nav {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	font-family: Lucida Grande, Lucida Sans, Arial, sans-serif;
 | 
			
		||||
	font-size: 1.2em;
 | 
			
		||||
	float: left;
 | 
			
		||||
	position: relative;
 | 
			
		||||
	z-index: 1;
 | 
			
		||||
	border-right: 1px solid #cccccc;
 | 
			
		||||
	bottom: -1px;
 | 
			
		||||
}
 | 
			
		||||
.ui-tabs-nav-item {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	float: left;
 | 
			
		||||
	border: 1px solid #cccccc;
 | 
			
		||||
	border-right: none;
 | 
			
		||||
}
 | 
			
		||||
.ui-tabs-nav-item a {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	float: left;
 | 
			
		||||
	font-size: 1em;
 | 
			
		||||
	font-weight: normal;
 | 
			
		||||
	text-decoration: none;
 | 
			
		||||
	padding: .5em 1.7em;
 | 
			
		||||
	color: #444444;
 | 
			
		||||
	background: #e0e0e0 url(images/e0e0e0_40x100_textures_02_glass_80.png) 0 50% repeat-x;
 | 
			
		||||
}
 | 
			
		||||
.ui-tabs-nav-item a:hover {
 | 
			
		||||
	background: #d8d8d8 url(images/d8d8d8_40x100_textures_02_glass_90.png) 0 50% repeat-x;
 | 
			
		||||
	color: #111111;
 | 
			
		||||
}
 | 
			
		||||
.ui-tabs-selected {
 | 
			
		||||
	border-bottom-color: #8ab9ff;
 | 
			
		||||
}
 | 
			
		||||
.ui-tabs-selected a, .ui-tabs-selected a:hover {
 | 
			
		||||
	background: #8ab9ff url(images/8ab9ff_40x100_textures_02_glass_50.png) 0 50% repeat-x;
 | 
			
		||||
	color: #000000;
 | 
			
		||||
}
 | 
			
		||||
.ui-tabs-panel {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	font-family: Lucida Grande, Lucida Sans, Arial, sans-serif;
 | 
			
		||||
	clear:left;
 | 
			
		||||
	border: 1px solid #cccccc;
 | 
			
		||||
	background: #f3f3f3 url(images/f3f3f3_40x100_textures_01_flat_0.png) 0 0 repeat-x;
 | 
			
		||||
	color: #362b36;
 | 
			
		||||
	padding: 1.5em 1.7em;	
 | 
			
		||||
	font-size: 1.2em;
 | 
			
		||||
}
 | 
			
		||||
.ui-tabs-hide {
 | 
			
		||||
	display: none;/* for accessible hiding: position: absolute; left: -99999999px*/;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*slider*/
 | 
			
		||||
.ui-slider {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	font-family: Lucida Grande, Lucida Sans, Arial, sans-serif;
 | 
			
		||||
	font-size: 1.2em;
 | 
			
		||||
	background: #f3f3f3 url(images/f3f3f3_40x100_textures_01_flat_0.png) 0 0 repeat-x;
 | 
			
		||||
	border: 1px solid #dddddd;
 | 
			
		||||
	height: .8em;
 | 
			
		||||
	position: relative;
 | 
			
		||||
}
 | 
			
		||||
.ui-slider-handle {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	z-index: 2;
 | 
			
		||||
	top: -3px;
 | 
			
		||||
	width: 1.2em;
 | 
			
		||||
	height: 1.2em;
 | 
			
		||||
	background: #e0e0e0 url(images/e0e0e0_40x100_textures_02_glass_80.png) 0 50% repeat-x;
 | 
			
		||||
	border: 1px solid #cccccc;
 | 
			
		||||
}
 | 
			
		||||
.ui-slider-handle:hover {
 | 
			
		||||
	background: #d8d8d8 url(images/d8d8d8_40x100_textures_02_glass_90.png) 0 50% repeat-x;
 | 
			
		||||
	border: 1px solid #888888;
 | 
			
		||||
}
 | 
			
		||||
.ui-slider-handle-active, .ui-slider-handle-active:hover {
 | 
			
		||||
	background: #8ab9ff url(images/8ab9ff_40x100_textures_02_glass_50.png) 0 50% repeat-x;
 | 
			
		||||
	border: 1px solid #2694e8;
 | 
			
		||||
}
 | 
			
		||||
.ui-slider-range {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	height: .8em;
 | 
			
		||||
	background: #d8d8d8 url(images/d8d8d8_40x100_textures_02_glass_90.png) 0 50% repeat-x;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	border: 1px solid #cccccc;
 | 
			
		||||
	border-left: 0;
 | 
			
		||||
	border-right: 0;
 | 
			
		||||
	top: -1px;
 | 
			
		||||
	z-index: 1;
 | 
			
		||||
	opacity:.7;
 | 
			
		||||
	filter:Alpha(Opacity=70);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*dialog*/
 | 
			
		||||
.ui-dialog {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	font-family: Lucida Grande, Lucida Sans, Arial, sans-serif;
 | 
			
		||||
	font-size: 1.2em;
 | 
			
		||||
	background: #f3f3f3 url(images/f3f3f3_40x100_textures_01_flat_0.png) 0 0 repeat-x;
 | 
			
		||||
	color: #362b36;
 | 
			
		||||
	border: 4px solid #dddddd;
 | 
			
		||||
	position: relative;
 | 
			
		||||
}
 | 
			
		||||
.ui-resizable-handle {
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	font-size: 0.1px;
 | 
			
		||||
	z-index: 99999;
 | 
			
		||||
}
 | 
			
		||||
.ui-resizable .ui-resizable-handle {
 | 
			
		||||
	display: block; 
 | 
			
		||||
}
 | 
			
		||||
body .ui-resizable-disabled .ui-resizable-handle { display: none; } /* use 'body' to make it more specific (css order) */
 | 
			
		||||
body .ui-resizable-autohide .ui-resizable-handle { display: none; } /* use 'body' to make it more specific (css order) */
 | 
			
		||||
.ui-resizable-n { 
 | 
			
		||||
	cursor: n-resize; 
 | 
			
		||||
	height: 7px; 
 | 
			
		||||
	width: 100%; 
 | 
			
		||||
	top: -5px; 
 | 
			
		||||
	left: 0px;  
 | 
			
		||||
}
 | 
			
		||||
.ui-resizable-s { 
 | 
			
		||||
	cursor: s-resize; 
 | 
			
		||||
	height: 7px; 
 | 
			
		||||
	width: 100%; 
 | 
			
		||||
	bottom: -5px; 
 | 
			
		||||
	left: 0px; 
 | 
			
		||||
}
 | 
			
		||||
.ui-resizable-e { 
 | 
			
		||||
	cursor: e-resize; 
 | 
			
		||||
	width: 7px; 
 | 
			
		||||
	right: -5px; 
 | 
			
		||||
	top: 0px; 
 | 
			
		||||
	height: 100%; 
 | 
			
		||||
}
 | 
			
		||||
.ui-resizable-w { 
 | 
			
		||||
	cursor: w-resize; 
 | 
			
		||||
	width: 7px; 
 | 
			
		||||
	left: -5px; 
 | 
			
		||||
	top: 0px; 
 | 
			
		||||
	height: 100%;
 | 
			
		||||
}
 | 
			
		||||
.ui-resizable-se { 
 | 
			
		||||
	cursor: se-resize; 
 | 
			
		||||
	width: 13px; 
 | 
			
		||||
	height: 13px; 
 | 
			
		||||
	right: 0px; 
 | 
			
		||||
	bottom: 0px; 
 | 
			
		||||
	background: url(images/222222_11x11_icon_resize_se.gif) no-repeat 0 0;
 | 
			
		||||
}
 | 
			
		||||
.ui-resizable-sw { 
 | 
			
		||||
	cursor: sw-resize; 
 | 
			
		||||
	width: 9px; 
 | 
			
		||||
	height: 9px; 
 | 
			
		||||
	left: 0px; 
 | 
			
		||||
	bottom: 0px;  
 | 
			
		||||
}
 | 
			
		||||
.ui-resizable-nw { 
 | 
			
		||||
	cursor: nw-resize; 
 | 
			
		||||
	width: 9px; 
 | 
			
		||||
	height: 9px; 
 | 
			
		||||
	left: 0px; 
 | 
			
		||||
	top: 0px; 
 | 
			
		||||
}
 | 
			
		||||
.ui-resizable-ne { 
 | 
			
		||||
	cursor: ne-resize; 
 | 
			
		||||
	width: 9px; 
 | 
			
		||||
	height: 9px; 
 | 
			
		||||
	right: 0px; 
 | 
			
		||||
	top: 0px; 
 | 
			
		||||
}
 | 
			
		||||
.ui-dialog-titlebar {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	padding: .5em 1.5em .5em 1em;
 | 
			
		||||
	color: #444444;
 | 
			
		||||
	background: #e0e0e0 url(images/e0e0e0_40x100_textures_02_glass_80.png) 0 50% repeat-x;
 | 
			
		||||
	border-bottom: 1px solid #cccccc;
 | 
			
		||||
	font-size: 1em;
 | 
			
		||||
	font-weight: normal;
 | 
			
		||||
	position: relative;
 | 
			
		||||
}
 | 
			
		||||
.ui-dialog-title {}
 | 
			
		||||
.ui-dialog-titlebar-close {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	background: url(images/888888_11x11_icon_close.gif) 0 0 no-repeat;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	right: 8px;
 | 
			
		||||
	top: .7em;
 | 
			
		||||
	width: 11px;
 | 
			
		||||
	height: 11px;
 | 
			
		||||
	z-index: 100;
 | 
			
		||||
}
 | 
			
		||||
.ui-dialog-titlebar-close-hover, .ui-dialog-titlebar-close:hover {
 | 
			
		||||
	background: url(images/222222_11x11_icon_close.gif) 0 0 no-repeat;
 | 
			
		||||
}
 | 
			
		||||
.ui-dialog-titlebar-close:active {
 | 
			
		||||
	background: url(images/ffffff_11x11_icon_close.gif) 0 0 no-repeat;
 | 
			
		||||
}
 | 
			
		||||
.ui-dialog-titlebar-close span {
 | 
			
		||||
	display: none;
 | 
			
		||||
}
 | 
			
		||||
.ui-dialog-content {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	color: #362b36;
 | 
			
		||||
	padding: 1.5em 1.7em;	
 | 
			
		||||
}
 | 
			
		||||
.ui-dialog-buttonpane {
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	bottom: 0;
 | 
			
		||||
	width: 100%;
 | 
			
		||||
	text-align: left;
 | 
			
		||||
	border-top: 1px solid #dddddd;
 | 
			
		||||
	background: #f3f3f3;
 | 
			
		||||
}
 | 
			
		||||
.ui-dialog-buttonpane button {
 | 
			
		||||
	margin: .5em 0 .5em 8px;
 | 
			
		||||
	color: #444444;
 | 
			
		||||
	background: #e0e0e0 url(images/e0e0e0_40x100_textures_02_glass_80.png) 0 50% repeat-x;
 | 
			
		||||
	font-size: 1em;
 | 
			
		||||
	border: 1px solid #cccccc;
 | 
			
		||||
	cursor: pointer;
 | 
			
		||||
	padding: .2em .6em .3em .6em;
 | 
			
		||||
	line-height: 1.4em;
 | 
			
		||||
}
 | 
			
		||||
.ui-dialog-buttonpane button:hover {
 | 
			
		||||
	color: #111111;
 | 
			
		||||
	background: #d8d8d8 url(images/d8d8d8_40x100_textures_02_glass_90.png) 0 50% repeat-x;
 | 
			
		||||
	border: 1px solid #888888;
 | 
			
		||||
}
 | 
			
		||||
.ui-dialog-buttonpane button:active {
 | 
			
		||||
	color: #000000;
 | 
			
		||||
	background: #8ab9ff url(images/8ab9ff_40x100_textures_02_glass_50.png) 0 50% repeat-x;
 | 
			
		||||
	border: 1px solid #2694e8;
 | 
			
		||||
}
 | 
			
		||||
/* This file skins dialog */
 | 
			
		||||
.ui-dialog.ui-draggable .ui-dialog-titlebar,
 | 
			
		||||
.ui-dialog.ui-draggable .ui-dialog-titlebar {
 | 
			
		||||
	cursor: move;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*datepicker*/
 | 
			
		||||
/* Main Style Sheet for jQuery UI date picker */
 | 
			
		||||
.ui-datepicker-div, .ui-datepicker-inline, #ui-datepicker-div {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	font-family: Lucida Grande, Lucida Sans, Arial, sans-serif;
 | 
			
		||||
	background: #f3f3f3 url(images/f3f3f3_40x100_textures_01_flat_0.png) 0 0 repeat-x;
 | 
			
		||||
	font-size: 1.2em;
 | 
			
		||||
	border: 4px solid #dddddd;
 | 
			
		||||
	width: 15.5em;
 | 
			
		||||
	padding: 2.5em .5em .5em .5em;
 | 
			
		||||
	position: relative;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-div, #ui-datepicker-div {
 | 
			
		||||
	z-index: 9999; /*must have*/
 | 
			
		||||
	display: none;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-inline {
 | 
			
		||||
	float: left;
 | 
			
		||||
	display: block;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-control {
 | 
			
		||||
	display: none;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-current {
 | 
			
		||||
	display: none;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-next, .ui-datepicker-prev {
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	left: .5em;
 | 
			
		||||
	top: .5em;
 | 
			
		||||
	background: #e0e0e0 url(images/e0e0e0_40x100_textures_02_glass_80.png) 0 50% repeat-x;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-next {
 | 
			
		||||
	left: 14.6em;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-next:hover, .ui-datepicker-prev:hover {
 | 
			
		||||
	background: #d8d8d8 url(images/d8d8d8_40x100_textures_02_glass_90.png) 0 50% repeat-x;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-next a, .ui-datepicker-prev a {
 | 
			
		||||
	text-indent: -999999px;
 | 
			
		||||
	width: 1.3em;
 | 
			
		||||
	height: 1.4em;
 | 
			
		||||
	display: block;
 | 
			
		||||
	font-size: 1em;
 | 
			
		||||
	background: url(images/888888_7x7_arrow_left.gif) 50% 50% no-repeat;
 | 
			
		||||
	border: 1px solid #cccccc;
 | 
			
		||||
	cursor: pointer;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-next a {
 | 
			
		||||
	background: url(images/888888_7x7_arrow_right.gif) 50% 50% no-repeat;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-prev a:hover {
 | 
			
		||||
	background: url(images/222222_7x7_arrow_left.gif) 50% 50% no-repeat;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-next a:hover {
 | 
			
		||||
	background: url(images/222222_7x7_arrow_right.gif) 50% 50% no-repeat;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-prev a:active {
 | 
			
		||||
	background: url(images/ffffff_7x7_arrow_left.gif) 50% 50% no-repeat;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-next a:active {
 | 
			
		||||
	background: url(images/ffffff_7x7_arrow_right.gif) 50% 50% no-repeat;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-header select {
 | 
			
		||||
	border: 1px solid #cccccc;
 | 
			
		||||
	color: #444444;
 | 
			
		||||
	background: #e0e0e0;
 | 
			
		||||
	font-size: 1em;
 | 
			
		||||
	line-height: 1.4em;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	top: .5em;
 | 
			
		||||
	margin: 0 !important;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-header option:focus, .ui-datepicker-header option:hover {
 | 
			
		||||
	background: #d8d8d8;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-header select.ui-datepicker-new-month {
 | 
			
		||||
	width: 7em;
 | 
			
		||||
	left: 2.2em;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-header select.ui-datepicker-new-year {
 | 
			
		||||
	width: 5em;
 | 
			
		||||
	left: 9.4em;
 | 
			
		||||
}
 | 
			
		||||
table.ui-datepicker {
 | 
			
		||||
	width: 15.5em;
 | 
			
		||||
	text-align: right;
 | 
			
		||||
}
 | 
			
		||||
table.ui-datepicker td a {
 | 
			
		||||
	padding: .1em .3em .1em 0;
 | 
			
		||||
	display: block;
 | 
			
		||||
	color: #444444;
 | 
			
		||||
	background: #e0e0e0 url(images/e0e0e0_40x100_textures_02_glass_80.png) 0 50% repeat-x;
 | 
			
		||||
	cursor: pointer;
 | 
			
		||||
	border: 1px solid #f3f3f3;
 | 
			
		||||
}
 | 
			
		||||
table.ui-datepicker td a:hover {
 | 
			
		||||
	border: 1px solid #888888;
 | 
			
		||||
	color: #111111;
 | 
			
		||||
	background: #d8d8d8 url(images/d8d8d8_40x100_textures_02_glass_90.png) 0 50% repeat-x;
 | 
			
		||||
}
 | 
			
		||||
table.ui-datepicker td a:active {
 | 
			
		||||
	border: 1px solid #2694e8;
 | 
			
		||||
	color: #000000;
 | 
			
		||||
	background: #8ab9ff url(images/8ab9ff_40x100_textures_02_glass_50.png) 0 50% repeat-x;
 | 
			
		||||
}
 | 
			
		||||
table.ui-datepicker .ui-datepicker-title-row td {
 | 
			
		||||
	padding: .3em 0;
 | 
			
		||||
	text-align: center;
 | 
			
		||||
	font-size: .9em;
 | 
			
		||||
	color: #362b36;
 | 
			
		||||
	text-transform: uppercase;
 | 
			
		||||
}
 | 
			
		||||
table.ui-datepicker .ui-datepicker-title-row td a {
 | 
			
		||||
	color: #362b36;
 | 
			
		||||
}
 | 
			
		||||
.ui-datepicker-cover {
 | 
			
		||||
	display: none;
 | 
			
		||||
	display/**/: block;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	z-index: -1;
 | 
			
		||||
	filter: mask();
 | 
			
		||||
	top: -4px;
 | 
			
		||||
	left: -4px;
 | 
			
		||||
	width: 193px;
 | 
			
		||||
	height: 200px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* ui-autocomplete */
 | 
			
		||||
.ui-autocomplete-results {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	font-family: Lucida Grande, Lucida Sans, Arial, sans-serif;
 | 
			
		||||
	font-size: 1.2em;
 | 
			
		||||
	z-index: 9999;	
 | 
			
		||||
}
 | 
			
		||||
.ui-autocomplete-results ul, .ui-autocomplete-results li {
 | 
			
		||||
	margin: 0; 
 | 
			
		||||
	padding: 0; 
 | 
			
		||||
	list-style: none;
 | 
			
		||||
}
 | 
			
		||||
.ui-autocomplete-results ul {
 | 
			
		||||
	border: 1px solid #cccccc;
 | 
			
		||||
	background: #f3f3f3 url(images/f3f3f3_40x100_textures_01_flat_0.png) 0 0 repeat-x;
 | 
			
		||||
	color: #362b36;
 | 
			
		||||
	margin-bottom: -1px;
 | 
			
		||||
}
 | 
			
		||||
.ui-autocomplete-results li {
 | 
			
		||||
	padding: .4em .5em;
 | 
			
		||||
	color: #444444;
 | 
			
		||||
	font-size: 1em;
 | 
			
		||||
	font-weight: normal;
 | 
			
		||||
	position: relative;
 | 
			
		||||
	border-left: 0;
 | 
			
		||||
	border-right: 0;
 | 
			
		||||
	margin: 1px 0;
 | 
			
		||||
}
 | 
			
		||||
.ui-autocomplete-results li.ui-hover-state, .ui-autocomplete-results li.ui-active-state {
 | 
			
		||||
	margin: 0;
 | 
			
		||||
}
 | 
			
		||||
/*Paul - you could add classes for these first last states instead for ie6... */
 | 
			
		||||
.ui-autocomplete-results li:first-child {
 | 
			
		||||
	border-top: 0;
 | 
			
		||||
}
 | 
			
		||||
.ui-autocomplete-results li:last-child {
 | 
			
		||||
	border-bottom: 0;
 | 
			
		||||
}
 | 
			
		||||
.ui-autocomplete-results li.ui-autocomplete-over {
 | 
			
		||||
	border: 1px solid #888888;
 | 
			
		||||
	background: #d8d8d8 url(images/d8d8d8_40x100_textures_02_glass_90.png) 0 50% repeat-x;
 | 
			
		||||
	color: #111111 !important;
 | 
			
		||||
}
 | 
			
		||||
.ui-autocomplete-results li.ui-autocomplete-active {
 | 
			
		||||
	border: 1px solid #2694e8;
 | 
			
		||||
	background: #8ab9ff url(images/8ab9ff_40x100_textures_02_glass_50.png) 0 50% repeat-x;
 | 
			
		||||
	color: #000000 !important;
 | 
			
		||||
	outline: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*UI ProgressBar */
 | 
			
		||||
.ui-progressbar {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	font-family: Lucida Grande, Lucida Sans, Arial, sans-serif;
 | 
			
		||||
	font-size: 1.2em;
 | 
			
		||||
	background: #f3f3f3 url(images/f3f3f3_40x100_textures_01_flat_0.png) 0 0 repeat-x;
 | 
			
		||||
	border: 1px solid #dddddd;
 | 
			
		||||
	position: relative;
 | 
			
		||||
}
 | 
			
		||||
.ui-progressbar-bar {
 | 
			
		||||
	background: #e0e0e0 url(images/e0e0e0_40x100_textures_02_glass_80.png) 0 50% repeat-x;
 | 
			
		||||
	overflow: visible;
 | 
			
		||||
	position: relative;
 | 
			
		||||
	border: 1px solid #cccccc;
 | 
			
		||||
	margin-top: -1px;
 | 
			
		||||
	margin-left: -1px;
 | 
			
		||||
	margin-bottom: -1px;
 | 
			
		||||
}
 | 
			
		||||
.ui-progressbar-text {
 | 
			
		||||
	color: #444444;
 | 
			
		||||
	padding: .2em .5em;
 | 
			
		||||
	font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
.ui-progressbar-text-back {
 | 
			
		||||
	display: none;
 | 
			
		||||
/*	position: absolute;
 | 
			
		||||
	top: 1px;
 | 
			
		||||
	left: 0px;
 | 
			
		||||
	font-weight: normal;
 | 
			
		||||
	color:#000;
 | 
			
		||||
	padding-top: 1px;
 | 
			
		||||
	padding-bottom: 1px;
 | 
			
		||||
	padding-right: 1px;
 | 
			
		||||
*/
 | 
			
		||||
}
 | 
			
		||||
.ui-progressbar-disabled {
 | 
			
		||||
	opacity:.5;
 | 
			
		||||
	filter:Alpha(Opacity=50);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*UI Colorpicker */
 | 
			
		||||
.ui-colorpicker {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	font-family: Lucida Grande, Lucida Sans, Arial, sans-serif;
 | 
			
		||||
	font-size: 1.2em;
 | 
			
		||||
	background: #f3f3f3 url(images/f3f3f3_40x100_textures_01_flat_0.png) 0 0 repeat-x;
 | 
			
		||||
	border: 4px solid #dddddd;
 | 
			
		||||
	padding: 5px;
 | 
			
		||||
	width: 360px;
 | 
			
		||||
	position: relative;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-color {
 | 
			
		||||
	float: left;
 | 
			
		||||
	width: 150px;
 | 
			
		||||
	height: 150px;
 | 
			
		||||
	margin-right: 15px;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-color div { /* is this extra div needed? why not just .ui-colorpicker-color ? */
 | 
			
		||||
	border: 1px solid #cccccc;
 | 
			
		||||
	height: 150px;
 | 
			
		||||
	background: url(images/_x_.);
 | 
			
		||||
	position: relative;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-color div div {/* shouldn't this have a class like ui-colorpicker-selector ? */
 | 
			
		||||
	width: 11px;
 | 
			
		||||
	height: 11px;
 | 
			
		||||
	background: url(images/_x_.);
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	border: 0;
 | 
			
		||||
	margin: -5px 0 0 -5px;
 | 
			
		||||
	float: none;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-hue {
 | 
			
		||||
	border: 1px solid #cccccc;
 | 
			
		||||
	float: left;
 | 
			
		||||
	width: 17px;
 | 
			
		||||
	height: 150px;
 | 
			
		||||
	background: url(images/_x_.);
 | 
			
		||||
	position: relative;
 | 
			
		||||
	margin-right: 15px;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-hue div {
 | 
			
		||||
	background:transparent url(images/_x_.); /*this image should be themerollable*/
 | 
			
		||||
	height:9px;
 | 
			
		||||
	left:-9px;
 | 
			
		||||
	margin:-4px 0 0;
 | 
			
		||||
	position:absolute;
 | 
			
		||||
	width:35px;
 | 
			
		||||
	cursor: ns-resize;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-new-color, .ui-colorpicker-current-color {
 | 
			
		||||
	float: left;
 | 
			
		||||
	width: 6.5em;
 | 
			
		||||
	height: 30px;
 | 
			
		||||
	border: 1px solid #cccccc;
 | 
			
		||||
	margin-right: 5px;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-current-color {
 | 
			
		||||
	margin-right: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ui-colorpicker-field, .ui-colorpicker-hex {
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	width: 6em;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-field label, .ui-colorpicker-field input,
 | 
			
		||||
.ui-colorpicker-hex label, .ui-colorpicker-hex input {
 | 
			
		||||
	font-size: 1em;
 | 
			
		||||
	color: #ffffff;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-field label, .ui-colorpicker-hex label {
 | 
			
		||||
	width: 1em;
 | 
			
		||||
	margin-right: .3em;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-field input, .ui-colorpicker-hex input {
 | 
			
		||||
	border: 1px solid #cccccc;
 | 
			
		||||
	width: 4.6em;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-hex {
 | 
			
		||||
	left: 205px;
 | 
			
		||||
	top: 134px;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-rgb-r {
 | 
			
		||||
	top: 52px;
 | 
			
		||||
	left: 205px;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-rgb-g {
 | 
			
		||||
	top: 78px;
 | 
			
		||||
	left: 205px;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-rgb-b {
 | 
			
		||||
	top: 105px;
 | 
			
		||||
	left: 205px;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-hsb-h {
 | 
			
		||||
	top: 52px;
 | 
			
		||||
	left: 290px;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-hsb-s {
 | 
			
		||||
	top: 78px;
 | 
			
		||||
	left: 290px;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-hsb-b {
 | 
			
		||||
	top: 105px;
 | 
			
		||||
	left: 290px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ui-colorpicker-field label {
 | 
			
		||||
	font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-field span {
 | 
			
		||||
	width: 7px;
 | 
			
		||||
	background: url(images/888888_11x11_icon_arrows_updown.gif) 50% 50% no-repeat;
 | 
			
		||||
	right: 5px;
 | 
			
		||||
	top: 0;
 | 
			
		||||
	height: 20px;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
}
 | 
			
		||||
.ui-colorpicker-field span:hover {
 | 
			
		||||
	background: url(images/222222_11x11_icon_arrows_updown.gif) 50% 50% no-repeat;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ui-colorpicker-submit {
 | 
			
		||||
	right: 14px;
 | 
			
		||||
	top: 134px;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
Generic ThemeRoller Classes
 | 
			
		||||
>> Make your jQuery Components ThemeRoller-Compatible!
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/*component global class*/
 | 
			
		||||
.ui-component {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
	font-family: Lucida Grande, Lucida Sans, Arial, sans-serif;
 | 
			
		||||
	font-size: 1.2em;
 | 
			
		||||
}
 | 
			
		||||
/*component content styles*/
 | 
			
		||||
.ui-component-content {
 | 
			
		||||
	border: 1px solid #dddddd;
 | 
			
		||||
	background: #f3f3f3 url(images/f3f3f3_40x100_textures_01_flat_0.png) 0 0 repeat-x;
 | 
			
		||||
	color: #362b36;
 | 
			
		||||
}
 | 
			
		||||
.ui-component-content a {
 | 
			
		||||
	color: #362b36;
 | 
			
		||||
	text-decoration: underline;
 | 
			
		||||
}
 | 
			
		||||
/*component states*/
 | 
			
		||||
.ui-default-state {
 | 
			
		||||
	border: 1px solid #cccccc;
 | 
			
		||||
	background: #e0e0e0 url(images/e0e0e0_40x100_textures_02_glass_80.png) 0 50% repeat-x;
 | 
			
		||||
	font-weight: normal;
 | 
			
		||||
	color: #444444 !important;
 | 
			
		||||
}
 | 
			
		||||
.ui-default-state a {
 | 
			
		||||
	color: #444444;
 | 
			
		||||
}
 | 
			
		||||
.ui-default-state:hover, .ui-hover-state {
 | 
			
		||||
	border: 1px solid #888888;
 | 
			
		||||
	background: #d8d8d8 url(images/d8d8d8_40x100_textures_02_glass_90.png) 0 50% repeat-x;
 | 
			
		||||
	font-weight: normal;
 | 
			
		||||
	color: #111111 !important;
 | 
			
		||||
}
 | 
			
		||||
.ui-hover-state a {
 | 
			
		||||
	color: #111111;
 | 
			
		||||
}
 | 
			
		||||
.ui-default-state:active, .ui-active-state {
 | 
			
		||||
	border: 1px solid #2694e8;
 | 
			
		||||
	background: #8ab9ff url(images/8ab9ff_40x100_textures_02_glass_50.png) 0 50% repeat-x;
 | 
			
		||||
	font-weight: normal;
 | 
			
		||||
	color: #000000 !important;
 | 
			
		||||
	outline: none;
 | 
			
		||||
}
 | 
			
		||||
.ui-active-state a {
 | 
			
		||||
	color: #000000;
 | 
			
		||||
	outline: none;
 | 
			
		||||
}
 | 
			
		||||
/*icons*/
 | 
			
		||||
.ui-arrow-right-default {background: url(images/888888_7x7_arrow_right.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrow-right-default:hover, .ui-arrow-right-hover {background: url(images/222222_7x7_arrow_right.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrow-right-default:active, .ui-arrow-right-active {background: url(images/ffffff_7x7_arrow_right.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrow-right-content {background: url(images/222222_7x7_arrow_right.gif) no-repeat 50% 50%;}
 | 
			
		||||
 | 
			
		||||
.ui-arrow-left-default {background: url(images/888888_7x7_arrow_left.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrow-left-default:hover, .ui-arrow-left-hover {background: url(images/222222_7x7_arrow_left.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrow-left-default:active, .ui-arrow-left-active {background: url(images/ffffff_7x7_arrow_left.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrow-left-content {background: url(images/222222_7x7_arrow_left.gif) no-repeat 50% 50%;}
 | 
			
		||||
 | 
			
		||||
.ui-arrow-down-default {background: url(images/888888_7x7_arrow_down.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrow-down-default:hover, .ui-arrow-down-hover {background: url(images/222222_7x7_arrow_down.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrow-down-default:active, .ui-arrow-down-active {background: url(images/ffffff_7x7_arrow_down.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrow-down-content {background: url(images/222222_7x7_arrow_down.gif) no-repeat 50% 50%;}
 | 
			
		||||
 | 
			
		||||
.ui-arrow-up-default {background: url(images/888888_7x7_arrow_up.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrow-up-default:hover, .ui-arrow-up-hover {background: url(images/222222_7x7_arrow_up.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrow-up-default:active, .ui-arrow-up-active {background: url(images/ffffff_7x7_arrow_up.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrow-up-content {background: url(images/222222_7x7_arrow_up.gif) no-repeat 50% 50%;}
 | 
			
		||||
 | 
			
		||||
.ui-close-default {background: url(images/888888_11x11_icon_close.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-close-default:hover, .ui-close-hover {background: url(images/222222_11x11_icon_close.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-close-default:active, .ui-close-active {background: url(images/ffffff_11x11_icon_close.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-close-content {background: url(images/ffffff_11x11_icon_close.gif) no-repeat 50% 50%;}
 | 
			
		||||
 | 
			
		||||
.ui-folder-closed-default {background: url(images/888888_11x11_icon_folder_closed.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-folder-closed-default:hover, .ui-folder-closed-hover {background: url(images/222222_11x11_icon_folder_closed.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-folder-closed-default:active, .ui-folder-closed-active {background: url(images/ffffff_11x11_icon_folder_closed.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-folder-closed-content {background: url(images/888888_11x11_icon_folder_closed.gif) no-repeat 50% 50%;}
 | 
			
		||||
 | 
			
		||||
.ui-folder-open-default {background: url(images/888888_11x11_icon_folder_open.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-folder-open-default:hover, .ui-folder-open-hover {background: url(images/222222_11x11_icon_folder_open.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-folder-open-default:active, .ui-folder-open-active {background: url(images/ffffff_11x11_icon_folder_open.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-folder-open-content {background: url(images/ffffff_11x11_icon_folder_open.gif) no-repeat 50% 50%;}
 | 
			
		||||
 | 
			
		||||
.ui-doc-default {background: url(images/888888_11x11_icon_doc.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-doc-default:hover, .ui-doc-hover {background: url(images/222222_11x11_icon_doc.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-doc-default:active, .ui-doc-active {background: url(images/ffffff_11x11_icon_doc.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-doc-content {background: url(images/222222_11x11_icon_doc.gif) no-repeat 50% 50%;}
 | 
			
		||||
 | 
			
		||||
.ui-arrows-leftright-default {background: url(images/888888_11x11_icon_arrows_leftright.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrows-leftright-default:hover, .ui-arrows-leftright-hover {background: url(images/222222_11x11_icon_arrows_leftright.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrows-leftright-default:active, .ui-arrows-leftright-active {background: url(images/ffffff_11x11_icon_arrows_leftright.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrows-leftright-content {background: url(images/222222_11x11_icon_arrows_leftright.gif) no-repeat 50% 50%;}
 | 
			
		||||
 | 
			
		||||
.ui-arrows-updown-default {background: url(images/888888_11x11_icon_arrows_updown.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrows-updown-default:hover, .ui-arrows-updown-hover {background: url(images/222222_11x11_icon_arrows_updown.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrows-updown-default:active, .ui-arrows-updown-active {background: url(images/ffffff_11x11_icon_arrows_updown.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-arrows-updown-content {background: url(images/222222_11x11_icon_arrows_updown.gif) no-repeat 50% 50%;}
 | 
			
		||||
 | 
			
		||||
.ui-minus-default {background: url(images/888888_11x11_icon_minus.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-minus-default:hover, .ui-minus-hover {background: url(images/222222_11x11_icon_minus.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-minus-default:active, .ui-minus-active {background: url(images/ffffff_11x11_icon_minus.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-minus-content {background: url(images/222222_11x11_icon_minus.gif) no-repeat 50% 50%;}
 | 
			
		||||
 | 
			
		||||
.ui-plus-default {background: url(images/888888_11x11_icon_plus.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-plus-default:hover, .ui-plus-hover {background: url(images/222222_11x11_icon_plus.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-plus-default:active, .ui-plus-active {background: url(images/ffffff_11x11_icon_plus.gif) no-repeat 50% 50%;}
 | 
			
		||||
.ui-plus-content {background: url(images/222222_11x11_icon_plus.gif) no-repeat 50% 50%;}
 | 
			
		||||
 | 
			
		||||
/*hidden elements*/
 | 
			
		||||
.ui-hidden {
 | 
			
		||||
	display: none;/* for accessible hiding: position: absolute; left: -99999999px*/;
 | 
			
		||||
}
 | 
			
		||||
.ui-accessible-hidden {
 | 
			
		||||
	 position: absolute; left: -99999999px;
 | 
			
		||||
}
 | 
			
		||||
/*reset styles*/
 | 
			
		||||
.ui-reset {
 | 
			
		||||
	/*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
 | 
			
		||||
}
 | 
			
		||||
/*clearfix class*/
 | 
			
		||||
.ui-clearfix:after {
 | 
			
		||||
    content: "."; 
 | 
			
		||||
    display: block; 
 | 
			
		||||
    height: 0; 
 | 
			
		||||
    clear: both; 
 | 
			
		||||
    visibility: hidden;
 | 
			
		||||
}
 | 
			
		||||
.ui-clearfix {display: inline-block;}
 | 
			
		||||
/* Hides from IE-mac \*/
 | 
			
		||||
* html .ui-clearfix {height: 1%;}
 | 
			
		||||
.ui-clearfix {display: block;}
 | 
			
		||||
/* End hide from IE-mac */
 | 
			
		||||
 | 
			
		||||
/* Note: for resizable styles, use the styles listed above in the dialog section */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1,56 +0,0 @@
 | 
			
		||||
var CommandWindow = {};
 | 
			
		||||
 | 
			
		||||
CommandWindow.updateCommandResult = function() {
 | 
			
		||||
	//todo:  add commandQueryObj.value to the history select box
 | 
			
		||||
 | 
			
		||||
	var commandQueryObj = $('commandQuery');
 | 
			
		||||
	var copyChkBoxObj = $('copyChkBox');
 | 
			
		||||
	var nodelistTxtObj = $('nodeList');
 | 
			
		||||
	var nodegrpsCboBoxObj = $('nodegrpsCboBox');
 | 
			
		||||
	var pshChkBoxObj = $('pshChkBox');
 | 
			
		||||
 | 
			
		||||
	var serialChkBoxObj = $('serialChkBox');
 | 
			
		||||
	var verifyChkBoxObj = $('verifyChkBox');
 | 
			
		||||
	var fanoutTxtBoxObj = $('fanoutTxtBox');
 | 
			
		||||
	var userIDTxtBoxObj = $('userIDTxtBox');
 | 
			
		||||
	var rshellTxtBoxObj = $('rshellTxtBox');
 | 
			
		||||
	var monitorChkBoxObj = $('monitorChkBox');
 | 
			
		||||
	var ret_codeChkBoxObj = $('ret_codeChkBox');
 | 
			
		||||
 | 
			
		||||
	// Do AJAX call and get HTML here.
 | 
			
		||||
	var url = "dsh_action.php";
 | 
			
		||||
	var postPara = "command=" + encodeURIComponent(commandQueryObj.value);
 | 
			
		||||
	if (nodelistTxtObj) { postPara += "&node=" + encodeURIComponent(nodelistTxtObj.value); }
 | 
			
		||||
	if (nodegrpsCboBoxObj) { postPara += "&nodegrps=" + encodeURIComponent(nodegrpsCboBoxObj.options[nodegrpsCboBoxObj.selectedIndex].value); }
 | 
			
		||||
	if (copyChkBoxObj.checked == true)	postPara += "©=on";	else postPara += "©=off";
 | 
			
		||||
	if (pshChkBoxObj.checked == true)	postPara += "&psh=on";	else postPara += "&psh=off";
 | 
			
		||||
	if (serialChkBoxObj.checked == true)	postPara += "&serial=on"; else postPara += "&serial=off";
 | 
			
		||||
	if (verifyChkBoxObj.checked == true)	postPara += "&verify=on"; else postPara += "&verify=off";
 | 
			
		||||
	postPara += "&fanout=" + encodeURIComponent(fanoutTxtBoxObj.value);
 | 
			
		||||
	postPara += "&userID=" + encodeURIComponent(userIDTxtBoxObj.value);
 | 
			
		||||
	postPara += "&rshell=" + encodeURIComponent(rshellTxtBoxObj.value);
 | 
			
		||||
	if (monitorChkBoxObj.checked == true)	postPara += "&monitor=on"; else postPara += "&monitor=off";
 | 
			
		||||
	if (ret_codeChkBoxObj.checked == true)	postPara += "&ret_code=on"; else postPara += "&ret_code=off";
 | 
			
		||||
 | 
			
		||||
	new Ajax.Request(url, {
 | 
			
		||||
	  method: 'post', postBody: postPara,
 | 
			
		||||
	  onSuccess: function(transport) {
 | 
			
		||||
    	var htmlContent = transport.responseText;
 | 
			
		||||
 | 
			
		||||
		 var win = new Window({className: "dialog",
 | 
			
		||||
		 			width: 350,
 | 
			
		||||
		 			height: 400,
 | 
			
		||||
		 			zIndex: 100,
 | 
			
		||||
		 			resizable: true,
 | 
			
		||||
		 			title: "Running commands",
 | 
			
		||||
		 			showEffect: Effect.BlindDown,
 | 
			
		||||
		 			hideEffect: Effect.SwitchOff,
 | 
			
		||||
		 			draggable: true,
 | 
			
		||||
		 			wiredDrag: true});
 | 
			
		||||
 | 
			
		||||
		 win.getContent().innerHTML = htmlContent;
 | 
			
		||||
		 //win.setStatusBar("Status bar info");
 | 
			
		||||
		 win.showCenter();
 | 
			
		||||
	  }
 | 
			
		||||
	});
 | 
			
		||||
};
 | 
			
		||||
@@ -18,70 +18,16 @@ for (i in cookies) { var pair = cookies[i].split('='); cookret[pair[0]] = unesca
 | 
			
		||||
return cookret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function selectAll(element, objectName)
 | 
			
		||||
// Check or uncheck all checkboxes that start with objectName
 | 
			
		||||
function selectAllCheckBoxes(element, objectName)
 | 
			
		||||
{
 | 
			
		||||
 //todo: use jQuery to accomplish this
 | 
			
		||||
 var sel = element.checked;
 | 
			
		||||
 var form = element.form;
 | 
			
		||||
 var searchstr = '^' + objectName + '\\d';
 | 
			
		||||
 var searchstr = '^' + objectName + '\d';
 | 
			
		||||
 for(var i = 0; i < form.length; i++)
 | 
			
		||||
  {
 | 
			
		||||
   var e = form.elements[i];
 | 
			
		||||
   if (e.type == "checkbox" && e.name.search(searchstr) > -1) { e.checked = sel; }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function isSelected(form, objectName)
 | 
			
		||||
{
 | 
			
		||||
var searchstr = '^' + objectName + '\\d';
 | 
			
		||||
for(var i = 0; i < form.length; i++)
 | 
			
		||||
 {
 | 
			
		||||
  var e = form.elements[i];
 | 
			
		||||
  if (e.type == "checkbox" && e.name.search(searchstr) > -1 && e.checked) { return true; }
 | 
			
		||||
 }
 | 
			
		||||
return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function numSelected(form, objectName)
 | 
			
		||||
{
 | 
			
		||||
var searchstr = '^' + objectName + '\\d';
 | 
			
		||||
var j = 0;
 | 
			
		||||
for(var i = 0; i < form.length; i++)
 | 
			
		||||
 {
 | 
			
		||||
  var e = form.elements[i];
 | 
			
		||||
  if (e.type == "checkbox" && e.name.search(searchstr) > -1 && e.checked)
 | 
			
		||||
   {
 | 
			
		||||
    if (++j == 2) { return j; }
 | 
			
		||||
   }
 | 
			
		||||
 }
 | 
			
		||||
return j;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function toggleSection(para, tableId)
 | 
			
		||||
{
 | 
			
		||||
 var t;  var i;
 | 
			
		||||
 var imageId = tableId + '-im';
 | 
			
		||||
 if (document.all) { t = document.all[tableId]; i = document.all[imageId]; }      // IE 4+
 | 
			
		||||
 else if (document.getElementById) { t = document.getElementById(tableId); i = document.getElementById(imageId); }    // Netscape 6
 | 
			
		||||
 else { alert('Cannot expand or collapse sections in this version of your browser.'); return false; }
 | 
			
		||||
 if (!t) { alert('Error: section ' + tableId + ' not found.'); return false; }
 | 
			
		||||
 | 
			
		||||
 if (!t.style.display || t.style.display == 'inline')   // the inner table is currently visible
 | 
			
		||||
  {
 | 
			
		||||
  t.style.display = 'none';
 | 
			
		||||
  para.title = 'Click to expand section';
 | 
			
		||||
  //if (txt) { txt = txt.replace(/^-/i, '+'); }
 | 
			
		||||
  i.src = 'images/plus-sign.gif';
 | 
			
		||||
  //i.alt = '+';
 | 
			
		||||
  }
 | 
			
		||||
 else   // the inner table is currently invisible
 | 
			
		||||
  {
 | 
			
		||||
  t.style.display = 'inline';
 | 
			
		||||
  para.title = 'Click to collapse section';
 | 
			
		||||
  //if (txt) { txt = txt.replace(/^\+/i, '-'); }
 | 
			
		||||
  i.src = 'images/minus-sign.gif';
 | 
			
		||||
  //i.alt = '-';
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -26,19 +26,24 @@ function insertHeader($title, $stylesheets, $javascripts, $currents) {
 | 
			
		||||
global $TOPDIR;
 | 
			
		||||
 | 
			
		||||
// Remember the current page so we can open it again the next time they come to the web interface
 | 
			
		||||
$expire_time = gmmktime(0, 0, 0, 1, 1, 2038);
 | 
			
		||||
foreach ($currents as $key => $value) { setcookie("currentpage[$key]", $value, $expire_time, '/'); }
 | 
			
		||||
if ($currents[0] != 'logout') {
 | 
			
		||||
	$expire_time = gmmktime(0, 0, 0, 1, 1, 2038);
 | 
			
		||||
	foreach ($currents as $key => $value) { setcookie("currentpage[$key]", $value, $expire_time, '/'); }
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
echo <<<EOS
 | 
			
		||||
echo <<<EOS1
 | 
			
		||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11-strict.dtd">
 | 
			
		||||
<html xmlns="http://www.w3.org/1999/xhtml">
 | 
			
		||||
<head>
 | 
			
		||||
<title>$title</title>
 | 
			
		||||
<meta http-equiv="Content-Type" content="application/xhtml+xml;  charset=iso-8859-1">
 | 
			
		||||
<link href="$TOPDIR/lib/style.css" rel="stylesheet">
 | 
			
		||||
<link href="$TOPDIR/lib/style.css" rel=stylesheet type='text/css'>
 | 
			
		||||
<link href="$TOPDIR/jq/theme/jquery-ui-theme.css" rel=stylesheet type='text/css'>
 | 
			
		||||
<script src="$TOPDIR/jq/jquery.min.js" type="text/javascript"></script>
 | 
			
		||||
<script src="$TOPDIR/jq/jquery-ui-all.min.js" type="text/javascript"></script>
 | 
			
		||||
<script src="$TOPDIR/lib/functions.js" type="text/javascript"></script>
 | 
			
		||||
 | 
			
		||||
EOS;
 | 
			
		||||
EOS1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if ($stylesheets) {
 | 
			
		||||
@@ -52,23 +57,52 @@ if ($javascripts) {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
echo "</head><body>\n";
 | 
			
		||||
echo <<<EOS
 | 
			
		||||
echo <<<EOS3
 | 
			
		||||
<table id=headingTable border=0 cellspacing=0 cellpadding=0>
 | 
			
		||||
<tr valign=top>
 | 
			
		||||
    <td><img class=ImgTop src='$TOPDIR/images/topl2.jpg'></td>
 | 
			
		||||
    <td class=TopMiddle><img id=xcatImage src='$TOPDIR/images/xCAT_icon-l.gif'></td>
 | 
			
		||||
    <td class=TopMiddle width='100%'>
 | 
			
		||||
 | 
			
		||||
EOS;
 | 
			
		||||
EOS3;
 | 
			
		||||
//echo "<div id=top><img id=xcatImage src='$TOPDIR/images/xCAT_icon.gif'><div id=menuDiv>\n";
 | 
			
		||||
 | 
			
		||||
insertMenus($currents);
 | 
			
		||||
 | 
			
		||||
echo "</td><td><img class=ImgTop src='$TOPDIR/images/topr2.jpg'></td></tr></table>\n";
 | 
			
		||||
//echo "</div></div>\n";     // end the top div
 | 
			
		||||
 | 
			
		||||
if (!isAuthenticated()) {
 | 
			
		||||
	insertLogin();		// display the login dialog and page footer
 | 
			
		||||
	exit;		// Do not want to continue with the rest of the page
 | 
			
		||||
	// If the login dialog is successful, it will load index.php which will remember what
 | 
			
		||||
	// page they were trying to go to.
 | 
			
		||||
}
 | 
			
		||||
}  // end insertHeader
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
// If they are not authenticated yet, display the login dialog
 | 
			
		||||
function insertLogin() {
 | 
			
		||||
global $TOPDIR;
 | 
			
		||||
// The javascript in xcatauth.js will add the Login button and display the dialog
 | 
			
		||||
echo <<<EOS2
 | 
			
		||||
<script src="$TOPDIR/lib/xcatauth.js" type="text/javascript"></script>
 | 
			
		||||
<div id=logdialog>
 | 
			
		||||
<p id=logdialogNote>Note: The username and password used must be in the passwd table in the xCAT database.</p>
 | 
			
		||||
<form id=loginform><table cellspacing=3>
 | 
			
		||||
<tr><td align=right><label for=username>Username:</label></td><td align=left><input id=username type=text name=username></td></tr>
 | 
			
		||||
<tr><td align=right><label for=password>Password:</label></td><td align=left><input id=password type=password name=password></td></tr>
 | 
			
		||||
</table></form>
 | 
			
		||||
<p><span id=logstatus><br/></span></p>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
EOS2;
 | 
			
		||||
 | 
			
		||||
insertFooter();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// This is the data structure that represents the menu for each page.
 | 
			
		||||
$MENU = array(
 | 
			
		||||
	'machines' => array(
 | 
			
		||||
@@ -135,6 +169,13 @@ $MENU = array(
 | 
			
		||||
			'about' => array('label' => 'About', 'url' => "$TOPDIR/support/about.php"),
 | 
			
		||||
			)
 | 
			
		||||
		),
 | 
			
		||||
	'logout' => array(
 | 
			
		||||
		'label' => 'Logout',
 | 
			
		||||
		'default' => 'logout',
 | 
			
		||||
		'list' => array(
 | 
			
		||||
			'logout' => array('label' => 'Logout/Login', 'url' => "$TOPDIR/lib/logout.php"),
 | 
			
		||||
			)
 | 
			
		||||
		),
 | 
			
		||||
	);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -208,10 +249,18 @@ echo '<div class=PageFooter><p id=disclaimer>This interface is still under const
 | 
			
		||||
// args is an array of arguments to the cmd
 | 
			
		||||
// Returns a tree of SimpleXML objects.  See perl-xCAT/xCAT/Client.pm for the format.
 | 
			
		||||
function docmd($cmd, $nr, $args){
 | 
			
		||||
	// If for some reason we are not logged in yet, do not even try to communicate w/xcatd
 | 
			
		||||
	if (!is_logged()) {
 | 
			
		||||
		echo "<p>Docmd: not logged in yet - can not run command.</p>\n";
 | 
			
		||||
		return simplexml_load_string('<xcat></xcat>','SimpleXMLElement', LIBXML_NOCDATA);
 | 
			
		||||
    }
 | 
			
		||||
	$request = simplexml_load_string('<xcatrequest></xcatrequest>');
 | 
			
		||||
	$request->addChild('command',$cmd);
 | 
			
		||||
	if(!empty($nr)) { $request->addChild('noderange',$nr); }
 | 
			
		||||
	if (!empty($args)) { foreach ($args as $a) { $request->addChild('arg',$a); } }
 | 
			
		||||
    $usernode=$request->addChild('becomeuser');
 | 
			
		||||
    $usernode->addChild('username',$_SESSION["username"]);
 | 
			
		||||
    $usernode->addChild('password',getpassword());
 | 
			
		||||
	#echo $request->asXML();
 | 
			
		||||
	$xml = submit_request($request,0);
 | 
			
		||||
	return $xml;
 | 
			
		||||
@@ -224,8 +273,8 @@ function docmd($cmd, $nr, $args){
 | 
			
		||||
// Returns a tree of SimpleXML objects.  See perl-xCAT/xCAT/Client.pm for the format.
 | 
			
		||||
function submit_request($req, $skipVerify){
 | 
			
		||||
	#global $cert,$port,$xcathost;
 | 
			
		||||
	$apachehome = '/var/www';		#todo:  for sles this should be /var/lib/wwwrun
 | 
			
		||||
	$cert = "$apachehome/.xcat/client-cred.pem";
 | 
			
		||||
	//$apachehome = '/var/www';		# for sles this should be /var/lib/wwwrun
 | 
			
		||||
	//$cert = "$apachehome/.xcat/client-cred.pem";
 | 
			
		||||
	$xcathost = "localhost";
 | 
			
		||||
	$port = "3001";
 | 
			
		||||
	$rsp = 0;
 | 
			
		||||
@@ -233,21 +282,28 @@ function submit_request($req, $skipVerify){
 | 
			
		||||
	$cleanexit=0;
 | 
			
		||||
 | 
			
		||||
	// Open a socket to xcatd
 | 
			
		||||
	$context = stream_context_create(array('ssl'=>array('local_cert' => $cert)));
 | 
			
		||||
	if($fp = stream_socket_client('ssl://'.$xcathost.':'.$port,$errno,$errstr,30,
 | 
			
		||||
                STREAM_CLIENT_CONNECT,$context)){
 | 
			
		||||
	$context = stream_context_create();		// do not need certificate anymore:  array('ssl'=>array('local_cert' => $cert))
 | 
			
		||||
	if($fp = stream_socket_client('ssl://'.$xcathost.':'.$port,$errno,$errstr,30,STREAM_CLIENT_CONNECT,$context)){
 | 
			
		||||
		fwrite($fp,$req->asXML());		// send the xml to xcatd
 | 
			
		||||
		while(!feof($fp)){				// and then read until there is no more
 | 
			
		||||
			$response .= preg_replace('/\n/','', stream_get_contents($fp));		// remove newlines and add it to the response
 | 
			
		||||
			$response .= preg_replace('/\n/','', fgets($fp));		// remove newlines and add it to the response
 | 
			
		||||
 | 
			
		||||
			// Look for the serverdone response
 | 
			
		||||
			$pattern = '/<xcatresponse>\s*<serverdone>\s*<\/serverdone>\s*<\/xcatresponse>\s*$/';
 | 
			
		||||
			if(preg_match($pattern,$response)) {		// transaction is done, pkg up the xml and return it
 | 
			
		||||
				#echo htmlentities($response);
 | 
			
		||||
				$response = '<xcat>' . preg_replace($pattern,'', $response) . '</xcat>';		// remove the serverdone response and put an xcat tag around the rest
 | 
			
		||||
			$fullpattern = '/<xcatresponse>\s*<serverdone>\s*<\/serverdone>\s*<\/xcatresponse>/';
 | 
			
		||||
			$mixedpattern = '/<serverdone>\s*<\/serverdone>.*<\/xcatresponse>/';
 | 
			
		||||
			//$shortpattern = '/<serverdone>\s*<\/serverdone>/';
 | 
			
		||||
			if(preg_match($mixedpattern,$response)) {		// transaction is done, pkg up the xml and return it
 | 
			
		||||
				//echo "<p>", htmlentities($response), "</p>\n";
 | 
			
		||||
				// remove the serverdone response and put an xcat tag around the rest
 | 
			
		||||
				$count = 0;
 | 
			
		||||
				$response = preg_replace($fullpattern,'', $response, -1, $count);		// 1st try to remove the long pattern
 | 
			
		||||
				if (!$count) { $response = preg_replace($mixedpattern,'', $response) . '</xcatresponse>/'; }		// if its not there, then remove the short pattern
 | 
			
		||||
				$response = "<xcat>$response</xcat>";
 | 
			
		||||
				//echo "<p>", htmlentities($response), "</p>\n";
 | 
			
		||||
				$rsp = simplexml_load_string($response,'SimpleXMLElement', LIBXML_NOCDATA);
 | 
			
		||||
				//echo '<p>'; print_r($rsp); echo "</p>\n";
 | 
			
		||||
				$cleanexit = 1;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		fclose($fp);
 | 
			
		||||
@@ -256,7 +312,7 @@ function submit_request($req, $skipVerify){
 | 
			
		||||
	}
 | 
			
		||||
	if(! $cleanexit){
 | 
			
		||||
		if(!$skipVerify){
 | 
			
		||||
			echo "<p>Error: xCAT response ended prematurely.</p>";
 | 
			
		||||
			echo "<p>Error: xCAT response ended prematurely: ", htmlentities($response), "</p>";
 | 
			
		||||
			$rsp = 0;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
@@ -344,17 +400,22 @@ function runcmd ($cmd, $mode, &$output, $options=NULL){
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
// Send the keys and values in the primary global arrays
 | 
			
		||||
function dumpGlobals() {
 | 
			
		||||
	trace('$_SERVER:');
 | 
			
		||||
	foreach ($_SERVER as $key => $val) { trace("$key = $val"); }
 | 
			
		||||
	trace('<br>$_ENV:');
 | 
			
		||||
	foreach ($_ENV as $key => $val) { trace("$key = $val"); }
 | 
			
		||||
	trace('<br>$_REQUEST:');
 | 
			
		||||
	foreach ($_REQUEST as $key => $val) { trace("$key = $val"); }
 | 
			
		||||
	//trace('<b>$_SERVER:</b>');
 | 
			
		||||
	//foreach ($_SERVER as $key => $val) { trace("$key=$val."); }
 | 
			
		||||
	//trace('<b>$_ENV:</b>');
 | 
			
		||||
	//foreach ($_ENV as $key => $val) { trace("$key=$val."); }
 | 
			
		||||
	trace('<b>$_GET:</b>');
 | 
			
		||||
	foreach ($_GET as $key => $val) { trace("$key=$val."); }
 | 
			
		||||
	trace('<b>$_POST:</b>');
 | 
			
		||||
	foreach ($_POST as $key => $val) { trace("$key=$val."); }
 | 
			
		||||
	trace('<b>$_COOKIE:</b>');
 | 
			
		||||
	foreach ($_COOKIE as $key => $val) { trace("$key=$val."); }
 | 
			
		||||
	if (isset($_SESSION)) {
 | 
			
		||||
 | 
			
		||||
		trace('<br>$_SESSION:');
 | 
			
		||||
		foreach ($_SESSION as $key => $val) { trace("$key = $val"); }
 | 
			
		||||
		trace('<b>$_SESSION:</b>');
 | 
			
		||||
		foreach ($_SESSION as $key => $val) { trace("$key=$val."); }
 | 
			
		||||
	}
 | 
			
		||||
	trace('<b>$GLOBALS:</b>');
 | 
			
		||||
	foreach ($GLOBALS as $key => $val) { trace("$key=$val."); }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -792,18 +853,19 @@ function insertTabs ($tablist, $currentTabIndex) {
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
// Create the Action buttons in a table.  Each argument passed in is a button, which is an array of attribute strings.
 | 
			
		||||
// If your onclick attribute contains javascript code that uses quotes, use double quotes instead of single quotes.
 | 
			
		||||
// Note:  if only 1 button is passed in, the button is not put in a table.
 | 
			
		||||
function insertButtons () {
 | 
			
		||||
	$num = func_num_args();
 | 
			
		||||
	if ($num > 1) echo "<TABLE cellpadding=0 cellspacing=2><TR>";
 | 
			
		||||
	/* if ($num > 1) */ echo "<TABLE cellpadding=0 cellspacing=2><TR>";
 | 
			
		||||
	foreach (func_get_args() as $button) {
 | 
			
		||||
		//echo "<td><INPUT type=submit class=but $button ></td>";
 | 
			
		||||
		$otherattrs = @$button['otherattrs'];
 | 
			
		||||
		if ($num > 1) echo "<td>";
 | 
			
		||||
		echo "<a class=button href='' onclick='{$button['onclick']};return false' $otherattrs><span>{$button['label']}</span></a>";
 | 
			
		||||
		if ($num > 1) echo "</td>";
 | 
			
		||||
		$id = @$button['id'];
 | 
			
		||||
		if (!empty($id)) { $id = "id=$id"; }
 | 
			
		||||
		/* if ($num > 1) */ echo "<td>";
 | 
			
		||||
		echo "<a class=button $id href='' onclick='{$button['onclick']};return false' $otherattrs><span>{$button['label']}</span></a>";
 | 
			
		||||
		/* if ($num > 1) */ echo "</td>";
 | 
			
		||||
		}
 | 
			
		||||
	if ($num > 1) echo "</TR></TABLE>\n";
 | 
			
		||||
	/* if ($num > 1) */ echo "</TR></TABLE>\n";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -839,4 +901,102 @@ function splitTableFields($line){
 | 
			
		||||
	return $fields;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#function to enable password storage to split between cookie and session variable
 | 
			
		||||
function xorcrypt($data,$key) {
 | 
			
		||||
    $datalen=strlen($data);
 | 
			
		||||
    $keylen=strlen($key);
 | 
			
		||||
    for ($i=0;$i<$datalen;$i++) {
 | 
			
		||||
        $data[$i]=chr(ord($data[$i])^ord($key[$i]));
 | 
			
		||||
    }
 | 
			
		||||
    return $data;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function getpassword() {
 | 
			
		||||
    if (isset($GLOBALS['xcatauthsecret'])) {
 | 
			
		||||
        $cryptext=$GLOBALS['xcatauthsecret'];
 | 
			
		||||
    } else if (isset($_COOKIE["xcatauthsecret"])) {
 | 
			
		||||
        $cryptext = $_COOKIE["xcatauthsecret"];
 | 
			
		||||
    } else {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
    return xorcrypt($_SESSION["secretkey"],base64_decode($cryptext));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#remembers the password, splitting knowledge between server and client side
 | 
			
		||||
#persistant storage
 | 
			
		||||
#Caller should regenerate session id when contemplating a new user/password,
 | 
			
		||||
#to preclude session fixation, though fixation is limited without the secret.
 | 
			
		||||
function setpassword($password) {
 | 
			
		||||
    $randlen=strlen($password);
 | 
			
		||||
    $key=getrandchars($randlen);
 | 
			
		||||
    $cryptext=xorcrypt($password,$key);
 | 
			
		||||
    $cryptext=base64_encode($cryptext); #non-ascii chars, base64 it
 | 
			
		||||
#Not bothering with explicit expiration, as time sync would be too hairy
 | 
			
		||||
#should go away when browser closes.  Any timeout will be handled server
 | 
			
		||||
#side.  If the session id invalidates and the one-time key discarded,
 | 
			
		||||
#the cookie contents are worthless anyway
 | 
			
		||||
#nevertheless, when logout happens, cookie should be reaped
 | 
			
		||||
    setcookie("xcatauthsecret",$cryptext,0,'/');
 | 
			
		||||
    $GLOBALS["xcatauthsecret"]=$cryptext; #May need it sooner, prefer globals
 | 
			
		||||
    $_SESSION["secretkey"]=$key;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function getrandchars($length) {
 | 
			
		||||
    $charset='0123456789abcdefghijklmnopqrstuvwxyz!@#$%^&*';
 | 
			
		||||
    $charsize=strlen($charset);
 | 
			
		||||
    srand();
 | 
			
		||||
    $chars='';
 | 
			
		||||
    for ($i=0;$i<$length;$i++) {
 | 
			
		||||
        $num=rand()%$charsize;
 | 
			
		||||
        $chars=$chars.substr($charset,$num,1);
 | 
			
		||||
    }
 | 
			
		||||
    return $chars;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Determine if they at least have a user/pw that they have entered (that may or may not be valid)
 | 
			
		||||
function is_logged() {
 | 
			
		||||
    if (isset($_SESSION["username"]) and !is_bool(getpassword())) {
 | 
			
		||||
        return true;
 | 
			
		||||
    } else {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Determine if they are currently logged in successfully
 | 
			
		||||
function isAuthenticated() {
 | 
			
		||||
    if (is_logged()) {
 | 
			
		||||
        if ($_SESSION["xcatpassvalid"] != 1) {
 | 
			
		||||
            $testcred=docmd("authcheck","",NULL);
 | 
			
		||||
            if (isset($testcred->{'xcatresponse'}->{'data'})) {
 | 
			
		||||
                $result="".$testcred->{'xcatresponse'}->{'data'};
 | 
			
		||||
                if (is_numeric(strpos("Authenticated",$result))) {
 | 
			
		||||
                    $_SESSION["xcatpassvalid"]=1; #proven good
 | 
			
		||||
                } else {
 | 
			
		||||
                    $_SESSION["xcatpassvalid"]=0; #proven bad
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if (isset($_SESSION["xcatpassvalid"]) and $_SESSION["xcatpassvalid"]==1) { return true; }
 | 
			
		||||
    else { return false; }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function logout() {
 | 
			
		||||
    #clear the secret cookie from browser.
 | 
			
		||||
    #expire cookie a week ago, server time, may not work if client clock way off, but the value will be cleared at least.
 | 
			
		||||
    if (isset($_COOKIE["xcatauthsecret"])) {
 | 
			
		||||
        setcookie("xcatauthsecret",'',time()-86400*7,'/'); #NOTE: though firefox doesn't seem to zap it dynamically from cookie store in
 | 
			
		||||
    #the client side dialog, firefox does stop submitting the value.  The sensitivity of the 'stale' cookie even if compromised
 | 
			
		||||
    #is negligible, as the session id will be invalidated and the one-time-key needed to decrypt the password is destroyed on the server
 | 
			
		||||
    }
 | 
			
		||||
    #expire the sesion cookie
 | 
			
		||||
    if (isset($_COOKIE[session_name()])) {
 | 
			
		||||
        setcookie(session_name(),"",time()-86400*7,"/");
 | 
			
		||||
    }
 | 
			
		||||
    #clear server store of data
 | 
			
		||||
    $_SESSION=array();
 | 
			
		||||
    session_destroy();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								xCAT-web/lib/jsonwrapper.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,6 @@
 | 
			
		||||
<?php
 | 
			
		||||
# In PHP 5.2 or higher we don't need to bring this in
 | 
			
		||||
if (!function_exists('json_encode')) {
 | 
			
		||||
	require_once 'jsonwrapper_inner.php';
 | 
			
		||||
} 
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										23
									
								
								xCAT-web/lib/jsonwrapper_inner.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,23 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
require_once 'JSON/JSON.php';
 | 
			
		||||
 | 
			
		||||
function json_encode($arg)
 | 
			
		||||
{
 | 
			
		||||
	global $services_json;
 | 
			
		||||
	if (!isset($services_json)) {
 | 
			
		||||
		$services_json = new Services_JSON();
 | 
			
		||||
	}
 | 
			
		||||
	return $services_json->encode($arg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function json_decode($arg)
 | 
			
		||||
{
 | 
			
		||||
	global $services_json;
 | 
			
		||||
	if (!isset($services_json)) {
 | 
			
		||||
		$services_json = new Services_JSON();
 | 
			
		||||
	}
 | 
			
		||||
	return $services_json->decode($arg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										30
									
								
								xCAT-web/lib/log.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,30 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
// ???
 | 
			
		||||
 | 
			
		||||
$TOPDIR = '..';
 | 
			
		||||
require_once "$TOPDIR/lib/functions.php";
 | 
			
		||||
require_once "$TOPDIR/lib/jsonwrapper.php";
 | 
			
		||||
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
 | 
			
		||||
    header("Cache-Control: no-store, no-cache, must-revalidate");
 | 
			
		||||
    header("Cache-Control: post-check=0, pre-check=0", false);
 | 
			
		||||
    header("Pragma: no-cache");
 | 
			
		||||
 | 
			
		||||
    if (isset($_REQUEST["password"])) {
 | 
			
		||||
        $_SESSION=array(); #Clear data from session. prevent session data from migrating in a hijacking?
 | 
			
		||||
        session_regenerate_id(true);#Zap existing session entirely..
 | 
			
		||||
        setpassword($_REQUEST["password"]);
 | 
			
		||||
        $_SESSION["xcatpassvalid"]=-1; #unproven password
 | 
			
		||||
    }
 | 
			
		||||
    if (isset($_REQUEST["username"])) {
 | 
			
		||||
        $_SESSION["username"]=$_REQUEST["username"];
 | 
			
		||||
        $_SESSION["xcatpassvalid"]=-1; #unproven password
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $jdata=array();
 | 
			
		||||
    if (isAuthenticated()) { $jdata["authenticated"]="yes"; }
 | 
			
		||||
    else { $jdata["authenticated"]="no"; }
 | 
			
		||||
 | 
			
		||||
    echo json_encode($jdata);
 | 
			
		||||
?>
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										28
									
								
								xCAT-web/lib/logout.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,28 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
// Allow the user to log out and log back in
 | 
			
		||||
 | 
			
		||||
$TOPDIR = '..';
 | 
			
		||||
require_once "$TOPDIR/lib/functions.php";
 | 
			
		||||
 | 
			
		||||
logout();
 | 
			
		||||
 | 
			
		||||
insertHeader('Logout/Login', NULL, NULL, array('logout','logout'));
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
dumpGlobals();
 | 
			
		||||
 | 
			
		||||
$xml = docmd("authcheck","",NULL);
 | 
			
		||||
echo "<p>authcheck:<br>\n";
 | 
			
		||||
foreach ($xml->children() as $response) foreach ($response->children() as $t) { echo (string) $t, "<br>\n"; }
 | 
			
		||||
echo "</p>\n";
 | 
			
		||||
 | 
			
		||||
$xml = docmd('tabdump','',NULL);
 | 
			
		||||
echo "<p>tabdump:<br>\n";
 | 
			
		||||
foreach ($xml->children() as $response) foreach ($response->children() as $t) { echo (string) $t, "<br>\n"; }
 | 
			
		||||
echo "</p>\n";
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
//insertNotDoneYet();
 | 
			
		||||
insertFooter();
 | 
			
		||||
?>
 | 
			
		||||
@@ -1,13 +1,53 @@
 | 
			
		||||
<?php
 | 
			
		||||
//setcookie("history", "", time() - 3600);  //to delete a cookie, but did not seem to work
 | 
			
		||||
$TOPDIR = '..';
 | 
			
		||||
require_once "../lib/functions.php";
 | 
			
		||||
 | 
			
		||||
echo "<p>\n";
 | 
			
		||||
runcmd('echo $PATH', 1, $junk);
 | 
			
		||||
runcmd('whoami', 1, $junk);
 | 
			
		||||
echo <<<EOS1
 | 
			
		||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11-strict.dtd">
 | 
			
		||||
<html xmlns="http://www.w3.org/1999/xhtml">
 | 
			
		||||
<head>
 | 
			
		||||
<title>phpinfo</title>
 | 
			
		||||
<meta http-equiv="Content-Type" content="application/xhtml+xml;  charset=iso-8859-1">
 | 
			
		||||
<link href="$TOPDIR/lib/style.css" rel=stylesheet type='text/css'>
 | 
			
		||||
 | 
			
		||||
<link href="$TOPDIR/jq/theme/jquery-ui-theme.css" rel=stylesheet type='text/css'>
 | 
			
		||||
<script src="$TOPDIR/jq/jquery.min.js" type="text/javascript"></script>
 | 
			
		||||
<script src="$TOPDIR/jq/jquery-ui-all.min.js" type="text/javascript"></script>
 | 
			
		||||
<script src="$TOPDIR/lib/functions.js" type="text/javascript"></script>
 | 
			
		||||
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
EOS1;
 | 
			
		||||
 | 
			
		||||
//insertLogin();
 | 
			
		||||
echo <<<EOS2
 | 
			
		||||
<script src="$TOPDIR/lib/xcatauth.js" type="text/javascript"></script>
 | 
			
		||||
<div id=logdialog>
 | 
			
		||||
<form id=loginform>
 | 
			
		||||
<label for=username>Username:</label><input id=username type=text name=username><br/>
 | 
			
		||||
<label for=password>Password:</label><input id=password type=password name=password></form>
 | 
			
		||||
<span class=logstatus id=logstatus><br/></span>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
EOS2;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
dumpGlobals();
 | 
			
		||||
 | 
			
		||||
$xml = docmd("authcheck","",NULL);
 | 
			
		||||
echo "<p>authcheck:<br>\n";
 | 
			
		||||
foreach ($xml->children() as $response) foreach ($response->children() as $t) { echo (string) $t, "<br>\n"; }
 | 
			
		||||
echo "</p>\n";
 | 
			
		||||
 | 
			
		||||
/* $output = array(); runcmd("listattr", 2, $output); foreach ($output as $line) { echo "<p>line=$line</p>"; } */
 | 
			
		||||
$xml = docmd('tabdump','',NULL);
 | 
			
		||||
echo "<p>tabdump:<br>\n";
 | 
			
		||||
foreach ($xml->children() as $response) foreach ($response->children() as $t) { echo (string) $t, "<br>\n"; }
 | 
			
		||||
echo "</p>\n";
 | 
			
		||||
 | 
			
		||||
phpinfo()
 | 
			
		||||
phpinfo();
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
echo "</body></html>\n";
 | 
			
		||||
?>
 | 
			
		||||
@@ -177,7 +177,6 @@ TEXTAREA {vertical-align : middle; font-size : 8pt; font-family : sans-serif; fo
 | 
			
		||||
 | 
			
		||||
.TableHeader { color: black; background-color : #fffdb0; font-weight : bold; font-size : 9pt; white-space: nowrap; }
 | 
			
		||||
.TableRow { color: black; background-color : #b3c2d9; font-size : 9pt; white-space: nowrap; } /* #d8dff1 */
 | 
			
		||||
.FormTable { color: black; background-color : #CCCCCC; }
 | 
			
		||||
.Info {color : blue;}
 | 
			
		||||
.Error {font-weight : bold; color : red;}
 | 
			
		||||
.Trace {color: gray;  padding: 0px; margin: 0px;}
 | 
			
		||||
@@ -250,3 +249,21 @@ a.button:active span {
 | 
			
		||||
    background-position: bottom left;
 | 
			
		||||
    padding: 6px 0 4px 18px; /* push text down 1px */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* For the Login dialog */
 | 
			
		||||
 | 
			
		||||
.LogDialog {
 | 
			
		||||
 background-color: white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#logdialog {	/* the div inside the dialog */
 | 
			
		||||
 margin: 0px 10px 20px 10px;	/* for some reason the containing dialog cuts off the right 30px */
 | 
			
		||||
 padding: 0px;
 | 
			
		||||
 /* background-color: white;
 | 
			
		||||
 font-family: Sans-Serif;
 | 
			
		||||
 font-size: 7pt; */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#logdialogNote {
 | 
			
		||||
 margin-top: 3px;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										66
									
								
								xCAT-web/lib/xcatauth.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,66 @@
 | 
			
		||||
/* xCAT WebUI authentication handling functions/setup */
 | 
			
		||||
/* IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html */
 | 
			
		||||
 | 
			
		||||
function onlogin (data, textstatus) {
 | 
			
		||||
    $("#password").val(""); //clear the password field regardless of what happens
 | 
			
		||||
    if (data.authenticated == "yes") {
 | 
			
		||||
        $("#logstatus").text("Logged in successfully");
 | 
			
		||||
        //todo: nrtree.refresh(); // Fix tree potentiall broken through attempts to operate without auth
 | 
			
		||||
        $("#logdialog").dialog("close");
 | 
			
		||||
        window.location = '../index.php';	// it has remembered what page they were trying to go to
 | 
			
		||||
    } else {
 | 
			
		||||
        $("#logstatus").text("Authentication failure");
 | 
			
		||||
        $("#logstatus").css("color","#ff0000");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function authenticate() {
 | 
			
		||||
    $("#logstatus").css("color","#000000");
 | 
			
		||||
    $("#logstatus").html('Authenticating...<img src="../images/throbber.gif"/>');
 | 
			
		||||
    var passwd=$("#password").val();
 | 
			
		||||
    $.post("../lib/log.php",{
 | 
			
		||||
            username: $("#username").val(),
 | 
			
		||||
            password: passwd
 | 
			
		||||
        },onlogin,"json");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$(document).ready(function() {
 | 
			
		||||
    $("#logdialog").dialog({
 | 
			
		||||
        modal: true,
 | 
			
		||||
        closeOnEscape: false,
 | 
			
		||||
        closebutton: false,
 | 
			
		||||
        /* dialogClass: 'LogDialog', */
 | 
			
		||||
        overlay: {
 | 
			
		||||
            backgroundColor: "#CCCCCC",
 | 
			
		||||
            opacity: 0.3
 | 
			
		||||
        },
 | 
			
		||||
        height: 270,
 | 
			
		||||
        width: 350,
 | 
			
		||||
        autoOpen: true,
 | 
			
		||||
        buttons: {
 | 
			
		||||
            "Log In": authenticate
 | 
			
		||||
            },
 | 
			
		||||
        open: function(type, dialog) {
 | 
			
		||||
            if (document.location.protocol == "http:") {
 | 
			
		||||
                $("#logstatus").html("Unencrypted Session!");
 | 
			
		||||
                $("#logstatus").css("color","#ff0000");
 | 
			
		||||
            }
 | 
			
		||||
            if ($("#username").val() == "") {
 | 
			
		||||
                $("#username").focus();
 | 
			
		||||
            } else {
 | 
			
		||||
                $("#password").focus();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    $("#username").keydown(function(event) { //When 'enter' is hit while in username, advance to password
 | 
			
		||||
        if (event.keyCode==13) {
 | 
			
		||||
            $("#password").focus();
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
    $("#password").keydown(function(event) { //Submit authentication if enter is pressed in password field
 | 
			
		||||
        if (event.keyCode==13) {
 | 
			
		||||
            authenticate();
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
@@ -24,7 +24,7 @@ $pages = array('intro' => 'Discover Hardware',
 | 
			
		||||
if (isset($_REQUEST['page'])) {	displayWizard($pages); }
 | 
			
		||||
 | 
			
		||||
else {		// initial display of the wizard, show the whole page
 | 
			
		||||
insertHeader('Discover New Nodes', array('discover.css',"$TOPDIR/lib/wizard.css"), array("$TOPDIR/jq/jquery.min.js"), array('machines','discover'));
 | 
			
		||||
insertHeader('Discover New Nodes', array('discover.css',"$TOPDIR/lib/wizard.css"), NULL, array('machines','discover'));
 | 
			
		||||
echo "<div id=content align=center>\n";
 | 
			
		||||
displayWizard($pages);
 | 
			
		||||
echo "</div>\n";	// end the content div
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										51
									
								
								xCAT-web/machines/noderangesource.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,51 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
// Gets the nodes and groups for group/node js widget
 | 
			
		||||
 | 
			
		||||
$TOPDIR = '..';
 | 
			
		||||
require_once "$TOPDIR/lib/functions.php";
 | 
			
		||||
require_once "$TOPDIR/lib/jsonwrapper.php";
 | 
			
		||||
    if (isset($_GET['id'])) {
 | 
			
		||||
        $id = $_GET['id'];
 | 
			
		||||
    }
 | 
			
		||||
    if ($id == "0") {
 | 
			
		||||
        $id = '/.*';
 | 
			
		||||
    } else {
 | 
			
		||||
        $id=preg_replace('/^,/','',$id);
 | 
			
		||||
    }
 | 
			
		||||
    $rvals=docmd('extnoderange',$id,array('subgroups'));
 | 
			
		||||
    $parents=array();
 | 
			
		||||
    $root=1;
 | 
			
		||||
    if ($id == '/.*') {
 | 
			
		||||
        $id=',';
 | 
			
		||||
    } else {
 | 
			
		||||
        $parents=split("@",$id);
 | 
			
		||||
        $id=",$id@";
 | 
			
		||||
        $root=0;
 | 
			
		||||
    }
 | 
			
		||||
    //unset($rvals->xcatresponse->serverdone[0]);
 | 
			
		||||
    $numsubgroups=count($rvals->xcatresponse->intersectinggroups);
 | 
			
		||||
    $numnodes=count($rvals->xcatresponse->node);
 | 
			
		||||
    $jdata=array();
 | 
			
		||||
    if ($numnodes >= $numsubgroups) { #If there are few enough subgroups to be helpful filters, add them in
 | 
			
		||||
        foreach ($rvals->xcatresponse->intersectinggroups as $group) {
 | 
			
		||||
            if (! in_array("$group",$parents)) {
 | 
			
		||||
            $jdata[]= array("data"=>"$group",
 | 
			
		||||
                            "attributes"=>array("id"=>"$id$group",
 | 
			
		||||
                                                "rel"=>'group'),
 | 
			
		||||
                            "state"=>'closed');
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    } #If there were more groups than nodes, leave the signal to noise ratio down
 | 
			
		||||
    if ($root==0) {
 | 
			
		||||
    foreach ($rvals->xcatresponse->node as $node) {
 | 
			
		||||
        $jdata[] = array("data"=>"$node",
 | 
			
		||||
                         "attributes"=>array("id"=>",$node",
 | 
			
		||||
                                             "rel"=>'node'));
 | 
			
		||||
    }
 | 
			
		||||
    }
 | 
			
		||||
#    header('Content-type: text/html');
 | 
			
		||||
    echo json_encode($jdata);
 | 
			
		||||
?>
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										14
									
								
								xCAT-web/manage/dsh.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,14 @@
 | 
			
		||||
 | 
			
		||||
.FormTable { color: black; background-color : #CCCCCC; }
 | 
			
		||||
 | 
			
		||||
#inner_table {
 | 
			
		||||
 margin-left: 5px;
 | 
			
		||||
 margin-right: 10px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#cmdDialog {
 | 
			
		||||
 margin: 0px 10px 20px 10px;	/* for some reason the containing dialog cuts off the right 30px */
 | 
			
		||||
 padding: 0px;
 | 
			
		||||
 font-family: Sans-Serif;
 | 
			
		||||
 font-size: 7pt;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										60
									
								
								xCAT-web/manage/dsh.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,60 @@
 | 
			
		||||
// Create and show the dialog that shows the dsh output
 | 
			
		||||
 | 
			
		||||
$(document).ready(function() {
 | 
			
		||||
	var cmddialog = $('<div id=cmdDialog title=Title></div>');
 | 
			
		||||
    cmddialog.dialog({ height: 500, width: 400, autoOpen: false});
 | 
			
		||||
 | 
			
		||||
    $("input[type='text']").keypress(function(e) { if (isEnterKey(e.which)) {opencmddialog();} });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Determine if the key pressed was the enter key.
 | 
			
		||||
// According to http://unixpapa.com/js/key.html, this is key code 13 in all browsers.
 | 
			
		||||
function isEnterKey(keycode) { if (keycode == 13) { return true; } else { return false; } }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Called by the select combobox to put its value into the command field
 | 
			
		||||
function _setvars(){
 | 
			
		||||
	var form = window.document.dshForm;
 | 
			
		||||
	form.command.value = form.history.value;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Pop open the dialog and fill it with the dsh output
 | 
			
		||||
function opencmddialog() {
 | 
			
		||||
	// Build the property list that will get POSTed
 | 
			
		||||
	var props = {};
 | 
			
		||||
	props.command = $('#command').val();
 | 
			
		||||
	props.nodegrps = $('#nodegrps option:selected').val();
 | 
			
		||||
 | 
			
		||||
	// If required fields were not filled in, bail
 | 
			
		||||
	if (props.command.length == 0 || props.nodegrps.length == 0) {
 | 
			
		||||
	    alert('Select a node group and enter a command before pressing the Run Cmd button.');
 | 
			
		||||
	    return;
 | 
			
		||||
	  }
 | 
			
		||||
 | 
			
		||||
	if ($('#nodeList')) { props.nodeList = $('#nodeList').val(); }
 | 
			
		||||
 | 
			
		||||
	if ($('#copy_script').attr('checked')) { props.copy_script = 1; }
 | 
			
		||||
	if ($('#run_psh').attr('checked')) { props.run_psh = 1; }
 | 
			
		||||
	if ($('#serial').attr('checked')) { props.serial = 1; }
 | 
			
		||||
	if ($('#monitor').attr('checked')) { props.monitor = 1; }
 | 
			
		||||
	if ($('#verify').attr('checked')) { props.verify = 1; }
 | 
			
		||||
	if ($('#collapse').attr('checked')) { props.collapse = 1; }
 | 
			
		||||
 | 
			
		||||
	var tmp = $('#fanout').val();
 | 
			
		||||
	if (tmp.length) { props.fanout = tmp; }
 | 
			
		||||
	var tmp = $('#userID').val();
 | 
			
		||||
	if (tmp.length) { props.userID = tmp; }
 | 
			
		||||
	var tmp = $('#rshell').val();
 | 
			
		||||
	if (tmp.length) { props.rshell = tmp; }
 | 
			
		||||
	var tmp = $('#shell_opt').val();
 | 
			
		||||
	if (tmp.length) { props.shell_opt = tmp; }
 | 
			
		||||
 | 
			
		||||
	if ($('#ret_code').attr('checked')) { props.ret_code = 1; }
 | 
			
		||||
 | 
			
		||||
	// Open the dialog and get the output sent to it
 | 
			
		||||
    $('#cmdDialog').children().remove();	// get rid of previous content
 | 
			
		||||
    $('#cmdDialog').dialog("open");
 | 
			
		||||
    $('#cmdDialog').load('dsh_action.php', props);
 | 
			
		||||
}
 | 
			
		||||
@@ -8,14 +8,14 @@ $expire_time = gmmktime(0, 0, 0, 1, 1, 2038);
 | 
			
		||||
 | 
			
		||||
require_once "$TOPDIR/lib/functions.php";
 | 
			
		||||
 | 
			
		||||
insertHeader('Run Commands on Nodes', array("$TOPDIR/themes/default.css"),
 | 
			
		||||
			array("$TOPDIR/lib/CommandWindow.js", "$TOPDIR/js/prototype.js", "$TOPDIR/js/scriptaculous.js?load=effects", "$TOPDIR/js/window.js"),
 | 
			
		||||
insertHeader('Run Commands on Nodes', array('dsh.css'),
 | 
			
		||||
			array('dsh.js'),
 | 
			
		||||
			array('manage','dsh'));
 | 
			
		||||
 | 
			
		||||
echo <<<EOS
 | 
			
		||||
<div id=content>
 | 
			
		||||
<FORM NAME="dsh_options" onsubmit="checkEmpty();">
 | 
			
		||||
<TABLE class="inner_table" cellspacing=0 cellpadding=5>
 | 
			
		||||
<FORM NAME=dshForm>
 | 
			
		||||
<TABLE id=inner_table cellspacing=0 cellpadding=5>
 | 
			
		||||
  <TBODY>
 | 
			
		||||
  	<TR><TD colspan=3>
 | 
			
		||||
EOS;
 | 
			
		||||
@@ -23,9 +23,9 @@ EOS;
 | 
			
		||||
if (isset($_REQUEST['noderange'])) {
 | 
			
		||||
	echo "<B><FONT size='+1'>Run Command on: </FONT></B>";
 | 
			
		||||
	if (strlen($_REQUEST['noderange']) > 70) {
 | 
			
		||||
		echo "<TEXTAREA rows=1 cols=70 readonly name=nodeList class=middle>" . $_REQUEST['noderange'] . "</TEXTAREA>\n";
 | 
			
		||||
		echo "<TEXTAREA rows=1 cols=70 readonly name=nodeList id=nodeList>" . $_REQUEST['noderange'] . "</TEXTAREA>\n";
 | 
			
		||||
	} else {
 | 
			
		||||
		echo "<INPUT size=70 type=text name=nodeList id=nodeList class=middle value='" . $_REQUEST['noderange'] . "'>\n";
 | 
			
		||||
		echo "<INPUT size=70 type=text name=nodeList id=nodeList value='" . $_REQUEST['noderange'] . "'>\n";
 | 
			
		||||
	}
 | 
			
		||||
} else { echo "<B><FONT size='+1'>Run Command on a Group of Nodes</FONT></B>\n"; }
 | 
			
		||||
 | 
			
		||||
@@ -36,12 +36,11 @@ echo <<<EOS2
 | 
			
		||||
	</TD></TR>
 | 
			
		||||
    <TR><TD colspan=3>
 | 
			
		||||
EOS2;
 | 
			
		||||
//		<INPUT type="button" id="runCmdButton" name="runCmdButton" value="Run Cmd" class=middle onclick="CommandWindow.updateCommandResult()">
 | 
			
		||||
insertButtons(array('label' => 'Run Cmd', 'onclick' => 'CommandWindow.updateCommandResult()'));
 | 
			
		||||
insertButtons(array('label' => 'Run Cmd', 'id' => 'runcmdButton', 'onclick' => 'opencmddialog()'));
 | 
			
		||||
echo "</TD></TR>\n";
 | 
			
		||||
 | 
			
		||||
if (!isset($_REQUEST['noderange'])) {
 | 
			
		||||
	echo "<TR class=FormTable><TD colspan=3>Run Command on Group:<SELECT name=nodegrps id=nodegrpsCboBox class=middle><OPTION value=''>Choose ...</OPTION>\n";
 | 
			
		||||
	echo "<TR class=FormTable><TD colspan=3>Run Command on Group:<SELECT name=nodegrps id=nodegrps><OPTION value=''>Choose ...</OPTION>\n";
 | 
			
		||||
  	$nodegroups = getGroups();
 | 
			
		||||
	foreach ($nodegroups as $group) {
 | 
			
		||||
		//if($group == $currentGroup) { $selected = 'selected'; } else { $selected = ''; }
 | 
			
		||||
@@ -53,9 +52,9 @@ if (!isset($_REQUEST['noderange'])) {
 | 
			
		||||
?>
 | 
			
		||||
    <TR class=FormTable>
 | 
			
		||||
      <TD colspan=3>Command: 
 | 
			
		||||
       <INPUT size=80 type=text name=command id=commandQuery class=middle> <!-- onchange='CommandWindow.updateCommandResult()' -->
 | 
			
		||||
       <INPUT size=80 type=text name=command id=command>
 | 
			
		||||
       History:
 | 
			
		||||
      <SELECT name=history onChange="_setvars();" class=middle>
 | 
			
		||||
      <SELECT name=history onChange="_setvars();">
 | 
			
		||||
      <OPTION value="">Choose ...</OPTION>
 | 
			
		||||
      <?php
 | 
			
		||||
		if (isset($_COOKIE['history'])) {
 | 
			
		||||
@@ -66,64 +65,64 @@ if (!isset($_REQUEST['noderange'])) {
 | 
			
		||||
      </TD>
 | 
			
		||||
    </TR>
 | 
			
		||||
    <TR class=FormTable>
 | 
			
		||||
      <TD colspan="3" nowrap><INPUT type="checkbox" name="copy_script" id="copyChkBox">
 | 
			
		||||
		Copy command to nodes  (The command specified above will 1st be copied
 | 
			
		||||
      <TD colspan=3><INPUT type=checkbox name=copy_script id=copy_script>
 | 
			
		||||
		Copy command to nodes (The command specified above will 1st be copied
 | 
			
		||||
      	to /tmp on the nodes and executed from there.)</TD>
 | 
			
		||||
    </TR>
 | 
			
		||||
    <TR class=FormTable>
 | 
			
		||||
      <TD colspan="3" nowrap><INPUT type="checkbox" name="run_psh" id="pshChkBox" disabled>
 | 
			
		||||
		Use parallel shell (psh) command instead of xdsh.  Currently this option must be used, and the options below (associated with xdsh) are disabled.</TD>
 | 
			
		||||
      <TD colspan=3><INPUT type=checkbox name=run_psh id=run_psh disabled>
 | 
			
		||||
		Use parallel shell (psh) command instead of xdsh.  When this option is chosen, some of the options below (associated with xdsh) are disabled.</TD>
 | 
			
		||||
    </TR>
 | 
			
		||||
    <TR class=FormTable>
 | 
			
		||||
      <TD colspan="3"><B>Options:</TD>
 | 
			
		||||
      <TD colspan=3><B>Options:</TD>
 | 
			
		||||
    </TR>
 | 
			
		||||
    <TR class=FormTable>
 | 
			
		||||
      <TD width="37"></TD>
 | 
			
		||||
      <TD width="210" valign="top" nowrap><INPUT type="checkbox" name="serial" id="serialChkBox">Streaming mode</TD>
 | 
			
		||||
      <TD width="500">Specifies that output is returned as it becomes available from each target, instead of waiting for the command to be completed on a target before returning output from that target.</TD>
 | 
			
		||||
      <TD width=37></TD>
 | 
			
		||||
      <TD valign=top nowrap><INPUT type=checkbox name=serial id=serial>Streaming mode</TD>
 | 
			
		||||
      <TD>Specifies that output is returned as it becomes available from each target, instead of waiting for the command to be completed on a target before returning output from that target.</TD>
 | 
			
		||||
    </TR>
 | 
			
		||||
    <TR class=FormTable>
 | 
			
		||||
      <TD></TD>
 | 
			
		||||
      <TD valign="top" nowrap><INPUT type="checkbox" name="monitor" id="monitorChkBox">Monitor</TD>
 | 
			
		||||
      <TD valign=top nowrap><INPUT type=checkbox name=monitor id=monitor>Monitor</TD>
 | 
			
		||||
      <TD>Prints starting and completion messages for each node.  Useful with Streaming mode.</TD>
 | 
			
		||||
    </TR>
 | 
			
		||||
    <TR class=FormTable>
 | 
			
		||||
      <TD></TD>
 | 
			
		||||
      <TD valign="top" nowrap><INPUT type="checkbox" name="verify" id="verifyChkBox">Verify</TD>
 | 
			
		||||
      <TD valign=top nowrap><INPUT type=checkbox name=verify id=verify>Verify</TD>
 | 
			
		||||
      <TD>Verifies that nodes are responding before sending the command to them.</TD>
 | 
			
		||||
    </TR>
 | 
			
		||||
    <TR class=FormTable>
 | 
			
		||||
      <TD></TD>
 | 
			
		||||
      <TD valign="top" nowrap><INPUT type="checkbox" name="collapse" id="collapseChkBox" disabled>Collaspe Identical Output</TD>
 | 
			
		||||
      <TD valign=top nowrap><INPUT type=checkbox name=collapse id=collapse disabled>Collaspe Identical Output</TD>
 | 
			
		||||
      <TD>Automatically pipe the xdsh output into xdshbak which will only display output once for all the nodes that display identical output.  See the xdshbak man page for more info.</TD>
 | 
			
		||||
    </TR>
 | 
			
		||||
    <TR class=FormTable>
 | 
			
		||||
      <TD></TD>
 | 
			
		||||
      <TD valign="top" nowrap>Fanout: <INPUT type="text" name="fanout" id="fanoutTxtBox"></TD>
 | 
			
		||||
      <TD valign=top nowrap>Fanout: <INPUT type=text name=fanout id=fanout></TD>
 | 
			
		||||
      <TD>The maximum number of nodes the command should be run on concurrently. When the command finishes on 1 of the nodes, it will be started on an additional node (the default is 64).</TD>
 | 
			
		||||
    </TR>
 | 
			
		||||
    <TR class=FormTable>
 | 
			
		||||
      <TD></TD>
 | 
			
		||||
      <TD valign="top" nowrap>UserID: <INPUT type="text" name="userID" id="userIDTxtBox"></TD>
 | 
			
		||||
      <TD valign=top nowrap>UserID: <INPUT type=text name=userID id=userID></TD>
 | 
			
		||||
      <TD>The user id to use to run the command on the nodes.</TD>
 | 
			
		||||
    </TR>
 | 
			
		||||
    <TR class=FormTable>
 | 
			
		||||
      <TD></TD>
 | 
			
		||||
      <TD valign="top" nowrap>Remote Shell: <INPUT type="text" name="rshell" id="rshellTxtBox" disabled></TD>
 | 
			
		||||
      <TD valign=top nowrap>Remote Shell: <INPUT type=text name=rshell id=rshell></TD>
 | 
			
		||||
      <TD>The remote shell program to use to run the command on the nodes. The default is /usr/bin/ssh.</TD>
 | 
			
		||||
    </TR>
 | 
			
		||||
    <TR class=FormTable>
 | 
			
		||||
      <TD></TD>
 | 
			
		||||
      <TD valign="top" nowrap>Shell Options: <INPUT type="txt" name="shell_opt" id="shell_optTxtBox" disabled></TD>
 | 
			
		||||
      <TD valign=top nowrap>Shell Options: <INPUT type=text name=shell_opt id=shell_opt></TD>
 | 
			
		||||
      <TD>Options to pass to the remote shell being used.</TD>
 | 
			
		||||
    </TR>
 | 
			
		||||
    <TR class=FormTable>
 | 
			
		||||
      <TD></TD>
 | 
			
		||||
      <TD valign="top" nowrap><INPUT type="checkbox" name="ret_code" id="ret_codeChkBox">Return Code</TD>
 | 
			
		||||
      <TD valign=top nowrap><INPUT type=checkbox name=ret_code id=ret_code>Return Code</TD>
 | 
			
		||||
      <TD>Prints the return code of the (last) command that was run remotely on each node. The return code is appended at the end of the output for each node.</TD>
 | 
			
		||||
    </TR>
 | 
			
		||||
    <TR><TD colspan="3">
 | 
			
		||||
		<font class="BlueBack">Tips:</font>
 | 
			
		||||
    <TR><TD colspan=3>
 | 
			
		||||
		<font class=BlueBack>Tips:</font>
 | 
			
		||||
		<UL>
 | 
			
		||||
		  <LI>See the <A href="<?php echo getDocURL('manpage','xdsh.1'); ?>">xdsh man page</A> for more information about this command.</LI>
 | 
			
		||||
		</UL>
 | 
			
		||||
@@ -132,27 +131,5 @@ if (!isset($_REQUEST['noderange'])) {
 | 
			
		||||
</TABLE>
 | 
			
		||||
</FORM>
 | 
			
		||||
<div>
 | 
			
		||||
<SCRIPT language="JavaScript">
 | 
			
		||||
<!--
 | 
			
		||||
// in CSM perl script this portion used to be javascript to get
 | 
			
		||||
// and set cookies, now php has handled it
 | 
			
		||||
 | 
			
		||||
//window.onload = function(){window.document.dsh_options.runCmdButton.focus()};
 | 
			
		||||
function _setvars(){
 | 
			
		||||
	var form = window.document.dsh_options;
 | 
			
		||||
	form.command.value = form.history.value;
 | 
			
		||||
}
 | 
			
		||||
function checkEmpty(){
 | 
			
		||||
	var form = window.document.dsh_options;
 | 
			
		||||
	var cmd = form.command.value;
 | 
			
		||||
	if (cmd.length == 0)
 | 
			
		||||
	  {
 | 
			
		||||
	    alert('Enter a command before pressing the Run Cmd button.');
 | 
			
		||||
	    return false;
 | 
			
		||||
	  }
 | 
			
		||||
	else { return true; }
 | 
			
		||||
}
 | 
			
		||||
-->
 | 
			
		||||
</SCRIPT>
 | 
			
		||||
</BODY>
 | 
			
		||||
</HTML>
 | 
			
		||||
@@ -30,66 +30,52 @@ if (isset($_COOKIE['history']) && array_search($_REQUEST['command'], $_COOKIE['h
 | 
			
		||||
 | 
			
		||||
	//get the command and the options
 | 
			
		||||
	$cmd = @$_REQUEST["command"];
 | 
			
		||||
	$copy = @$_REQUEST["copy"];
 | 
			
		||||
	$node = @$_REQUEST["node"];
 | 
			
		||||
	$group = @$_REQUEST["nodegrps"];
 | 
			
		||||
	$psh = @$_REQUEST["psh"];
 | 
			
		||||
 | 
			
		||||
	$copy = @$_REQUEST["copy_script"];
 | 
			
		||||
	$psh = @$_REQUEST["run_psh"];
 | 
			
		||||
 | 
			
		||||
	$serial = @$_REQUEST["serial"];
 | 
			
		||||
	$monitor = @$_REQUEST["monitor"];
 | 
			
		||||
	$verify = @$_REQUEST["verify"];
 | 
			
		||||
	$collapse = @$_REQUEST["collapse"];
 | 
			
		||||
 | 
			
		||||
	$fanout = @$_REQUEST["fanout"];
 | 
			
		||||
	$userID = @$_REQUEST["userID"];
 | 
			
		||||
	$rshell = @$_REQUEST["rshell"];
 | 
			
		||||
	$shell_opt = @$_REQUEST["shell_opt"];
 | 
			
		||||
	$monitor = @$_REQUEST["monitor"];
 | 
			
		||||
 | 
			
		||||
	$ret_code = @$_REQUEST["ret_code"];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	// Set the cmd arguments
 | 
			
		||||
	if (!empty($group)) $noderange = $group;
 | 
			
		||||
	else $noderange = $node;
 | 
			
		||||
 | 
			
		||||
	if ($serial == "on") $args[] = "-s";	//streaming mode
 | 
			
		||||
	if ($copy)  $args[] = "-e";
 | 
			
		||||
 | 
			
		||||
	if ($serial) $args[] = "-s";	//streaming mode
 | 
			
		||||
	if ($monitor)  $args[] = "-m";
 | 
			
		||||
	if ($verify)  $args[] = "-v";
 | 
			
		||||
 | 
			
		||||
	if (!empty($fanout)) { $args[] = "-f"; $args[] = $fanout; }
 | 
			
		||||
	if (!empty($userID)) { $args[] = "-l"; $args[] = $userID; }
 | 
			
		||||
	if ($verify == "on")  $args[] = "-v";
 | 
			
		||||
	if ($monitor == "on")  $args[] = "-m";
 | 
			
		||||
	if ($copy == "on")  $args[] = "-e";
 | 
			
		||||
	if ($ret_code == "on") $args[] = "-z";
 | 
			
		||||
	if (!empty($rshell)) { $args[] = "-r"; $args[] = $rshell; }
 | 
			
		||||
	if (!empty($shell_opt)) { $args[] = "-o"; $args[] = $shell_opt; }
 | 
			
		||||
 | 
			
		||||
	//$exp_cmd = "export DSH_CONTEXT=XCAT XCATROOT=/opt/xcat; ";
 | 
			
		||||
	if ($ret_code) $args[] = "-z";
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
	if ($copy == "on"){		//using dcp/prcp
 | 
			
		||||
 | 
			
		||||
		//extract the script name from the command
 | 
			
		||||
		$script = strtok($cmd,' ');
 | 
			
		||||
 | 
			
		||||
		//copy the command to the remote node
 | 
			
		||||
		$source = $script;
 | 
			
		||||
		$target = "/tmp";
 | 
			
		||||
		if (empty($psh) || $psh!="on"){
 | 
			
		||||
			$xml = docmd('xdcp',$noderange,array($source, $target));
 | 
			
		||||
			//todo: check if copy succeeded
 | 
			
		||||
		}else{
 | 
			
		||||
			runcmd("pscp $source $noderange:$target",1,$outp);
 | 
			
		||||
		}
 | 
			
		||||
		$cmd = "/tmp/$cmd";
 | 
			
		||||
	}
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
	if (empty($psh) || $psh!="on") $command = "xdsh";
 | 
			
		||||
	if (!$psh) $command = "xdsh";
 | 
			
		||||
	else $command = "psh";
 | 
			
		||||
 | 
			
		||||
	//if ($collapse == "on")  $command_string .= " | dshbak -c";
 | 
			
		||||
	//todo:  if ($collapse == "on")  $command_string .= " | dshbak -c";
 | 
			
		||||
 | 
			
		||||
	// Run the script
 | 
			
		||||
	$args[] = $cmd;
 | 
			
		||||
	echo "<p><b>Command:  $command $noderange " . implode(' ',$args) . "</b></p>";
 | 
			
		||||
	//echo "<p><b>Command Ouput:</b></br></p>"; //output will be returned from the runcmd function call
 | 
			
		||||
	//$rc = runcmd($command_string,1, $outp);	//streaming mode - DOES NOT WORK YET
 | 
			
		||||
	$xml = docmd($command, $noderange, $args);
 | 
			
		||||
	echo "<p>Command:  <b>$command $noderange " . implode(' ',$args) . "</b></p><p>";
 | 
			
		||||
	$xml = docmd($command, $noderange, $args);		//todo: do streaming output
 | 
			
		||||
	foreach ($xml->children() as $response) foreach ($response->children() as $line) { echo "$line<br>"; }
 | 
			
		||||
	echo "</p>\n";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,20 @@ $TOPDIR = '..';
 | 
			
		||||
require_once "$TOPDIR/lib/functions.php";
 | 
			
		||||
 | 
			
		||||
insertHeader('Diagnose', NULL, NULL, array('support','diagnose'));
 | 
			
		||||
 | 
			
		||||
dumpGlobals();
 | 
			
		||||
 | 
			
		||||
$xml = docmd("authcheck","",NULL);
 | 
			
		||||
echo "<p>authcheck:<br>\n";
 | 
			
		||||
foreach ($xml->children() as $response) foreach ($response->children() as $t) { echo (string) $t, "<br>\n"; }
 | 
			
		||||
echo "</p>\n";
 | 
			
		||||
 | 
			
		||||
$xml = docmd('tabdump','',NULL);
 | 
			
		||||
echo "<p>tabdump:<br>\n";
 | 
			
		||||
foreach ($xml->children() as $response) foreach ($response->children() as $t) { echo (string) $t, "<br>\n"; }
 | 
			
		||||
echo "</p>\n";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
insertNotDoneYet();
 | 
			
		||||
insertFooter();
 | 
			
		||||
?>
 | 
			
		||||
 
 | 
			
		||||
@@ -79,8 +79,8 @@ then
 | 
			
		||||
  #fi
 | 
			
		||||
 | 
			
		||||
  # Authorize the apacheuser to xcatd
 | 
			
		||||
  echo -e "y\ny\ny" | %{prefix}/share/xcat/scripts/setup-local-client.sh $apacheuser
 | 
			
		||||
  XCATROOT=%{prefix} %{prefix}/sbin/chtab priority=5 policy.name=$apacheuser policy.rule=allow
 | 
			
		||||
  #echo -e "y\ny\ny" | %{prefix}/share/xcat/scripts/setup-local-client.sh $apacheuser
 | 
			
		||||
  #XCATROOT=%{prefix} %{prefix}/sbin/chtab priority=5 policy.name=$apacheuser policy.rule=allow
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||