diff --git a/sql/database-create.sql b/sql/database-create.sql
index b5d8e0e2c79ad62123769a32c18dec93c3fe7987..b58d766416efb9a228c37079f98ce855854be43d 100644
--- a/sql/database-create.sql
+++ b/sql/database-create.sql
@@ -165,9 +165,8 @@ CREATE TABLE eventlist (
KEY vnode (vnode)
) TYPE=MyISAM;
-
--
--- Table structure for table 'experiment_stats'
+-- Table structure for table 'experiment_resources'
--
CREATE TABLE experiment_resources (
@@ -1296,6 +1295,7 @@ CREATE TABLE users (
usr_zip tinytext,
usr_country tinytext,
usr_phone tinytext,
+ usr_shell tinytext,
usr_pswd tinytext NOT NULL,
unix_uid smallint(5) unsigned NOT NULL auto_increment,
status enum('newuser','unapproved','unverified','active','frozen','other') NOT NULL default 'newuser',
diff --git a/sql/database-migrate.txt b/sql/database-migrate.txt
index 49116bdf1817ab4563a10fcf08ed1f5ebe46e170..d2acd114ca93094c4cb4de2064ff10e4c4924acd 100644
--- a/sql/database-migrate.txt
+++ b/sql/database-migrate.txt
@@ -573,3 +573,9 @@ last_net_act,last_cpu_act,last_ext_act);
update experiments set expt_swap_uid=expt_head_uid
where expt_swapped is not null;
+
+1.148: Add usr_shell to users table to specify user's preferred shell.
+ Retroactively make each user's preferred shell 'tcsh'.
+
+ ALTER TABLE users ADD COLUMN usr_shell TINYTEXT AFTER usr_phone;
+ UPDATE users SET usr_shell='tcsh';
diff --git a/www/joinproject.php3 b/www/joinproject.php3
index 211b680b9561a86943d4d0d3621b5d2a9d624f8e..6c98d2c7807dfcb33c8b48244c1fecdff75a7f5b 100644
--- a/www/joinproject.php3
+++ b/www/joinproject.php3
@@ -661,13 +661,13 @@ if (! $returning) {
DBQueryFatal("INSERT INTO users ".
"(uid,usr_created,usr_expires,usr_name,usr_email,usr_addr,".
" usr_addr2,usr_city,usr_state,usr_zip,usr_country, ".
- " usr_URL,usr_phone,usr_title,usr_affil,usr_pswd,unix_uid,".
+ " usr_URL,usr_phone,usr_shell,usr_title,usr_affil,usr_pswd,unix_uid,".
" status,pswd_expires,usr_modified) ".
"VALUES ('$joining_uid', now(), '$usr_expires', '$usr_name', ".
"'$usr_email', ".
"'$usr_addr', '$usr_addr2', '$usr_city', '$usr_state', '$usr_zip', ".
"'$usr_country', ".
- "'$usr_URL', '$usr_phone', '$usr_title', '$usr_affil', ".
+ "'$usr_URL', '$usr_phone', 'tcsh', '$usr_title', '$usr_affil', ".
"'$encoding', NULL, 'newuser', ".
"date_add(now(), interval 1 year), now())");
diff --git a/www/moduserinfo.php3 b/www/moduserinfo.php3
index 1961fd25a523176988a4d507cadf6d86bbb722d8..ce59dd8a0e1db0c8260233aafc62adae50294904 100644
--- a/www/moduserinfo.php3
+++ b/www/moduserinfo.php3
@@ -22,6 +22,10 @@ LOGGEDINORDIE($uid,
CHECKLOGIN_USERSTATUS|CHECKLOGIN_PSWDEXPIRED|CHECKLOGIN_WEBONLY);
$isadmin = ISADMIN($uid);
+
+$shelllist = array( 'tcsh', 'bash', 'csh', 'sh' );
+$defaultshell = 'tcsh';
+
#
# Spit the form out using the array of data and error strings (if any).
#
@@ -29,6 +33,7 @@ function SPITFORM($formfields, $errors)
{
global $TBDB_UIDLEN, $TBDB_PIDLEN, $TBDB_GIDLEN, $isadmin;
global $target_uid;
+ global $shelllist, $defaultshell;
#
# Standard Testbed Header. Written late cause of password
@@ -193,6 +198,28 @@ function SPITFORM($formfields, $errors)
size=15>
";
+ #
+ # Default Group
+ #
+
+ # $q = DBQueryWarn("select gid, pid
+
+ # Default Shell
+ echo "
Shell: |
+ ";
+ echo " |
";
+
#
# Phone
#
@@ -329,6 +356,7 @@ $defaults[usr_name] = stripslashes($row[usr_name]);
$defaults[usr_phone] = $row[usr_phone];
$defaults[usr_title] = stripslashes($row[usr_title]);
$defaults[usr_affil] = stripslashes($row[usr_affil]);
+$defaults[usr_shell] = stripslashes($row[usr_shell]);
#
# On first load, display a form consisting of current user values, and exit.
@@ -359,6 +387,10 @@ if (!isset($formfields[usr_affil]) ||
strcmp($formfields[usr_affil], "") == 0) {
$errors["Affiliation"] = "Missing Field";
}
+if (!isset($formfields[usr_shell]) ||
+ !in_array($formfields[usr_shell], $shelllist)) {
+ $errors["Shell"] = "Invalid Shell";
+}
if (!isset($formfields[usr_email]) ||
strcmp($formfields[usr_email], "") == 0) {
$errors["Email Address"] = "Missing Field";
@@ -441,6 +473,7 @@ $usr_state = addslashes($formfields[usr_state]);
$usr_zip = addslashes($formfields[usr_zip]);
$usr_country = addslashes($formfields[usr_country]);
$usr_phone = $formfields[usr_phone];
+$usr_shell = $formfields[usr_shell];
$password1 = $formfields[password1];
$password2 = $formfields[password2];
@@ -545,6 +578,7 @@ if (strcmp($defaults[usr_name], $formfields[usr_name]) ||
strcmp($defaults[usr_phone], $formfields[usr_phone]) ||
strcmp($defaults[usr_title], $formfields[usr_title]) ||
strcmp($defaults[usr_affil], $formfields[usr_affil]) ||
+ strcmp($defaults[usr_shell], $formfields[usr_shell]) ||
# Check this too, since we want to call out if the email addr changed.
strcmp($defaults[usr_email], $formfields[usr_email])) {
@@ -560,6 +594,7 @@ if (strcmp($defaults[usr_name], $formfields[usr_name]) ||
"usr_phone=\"$usr_phone\", ".
"usr_title=\"$usr_title\", ".
"usr_affil=\"$usr_affil\", ".
+ "usr_shell=\"$usr_shell\", ".
"usr_modified=now() ".
"WHERE uid=\"$target_uid\"");
@@ -585,7 +620,8 @@ if (strcmp($defaults[usr_name], $formfields[usr_name]) ||
"ZIP/Postal Code: $usr_zip\n".
"Country: $usr_country\n".
"Phone: $usr_phone\n".
- "Title: $usr_title\n",
+ "Title: $usr_title\n".
+ "Shell: $usr_shell\n",
"From: $TBMAIL_OPS\n".
$BCC .
"Errors-To: $TBMAIL_WWW");
diff --git a/www/newproject.php3 b/www/newproject.php3
index 431659a834902120071696a1968b293422337cda..aa6f5b9a52dbc1a9b1b478d83a93f1c8eff7c8ca 100755
--- a/www/newproject.php3
+++ b/www/newproject.php3
@@ -912,14 +912,14 @@ if (! $returning) {
DBQueryFatal("INSERT INTO users ".
"(uid,usr_created,usr_expires,usr_name,usr_email,usr_addr,".
" usr_addr2,usr_city,usr_state,usr_zip,usr_country, ".
- " usr_URL,usr_title,usr_affil,usr_phone,usr_pswd,unix_uid,".
+ " usr_URL,usr_title,usr_affil,usr_phone,usr_shell,usr_pswd,unix_uid,".
" status,pswd_expires,usr_modified) ".
"VALUES ('$proj_head_uid', now(), '$proj_expires', '$usr_name', ".
"'$usr_email', ".
"'$usr_addr', '$usr_addr2', '$usr_city', '$usr_state', '$usr_zip', ".
"'$usr_country', ".
"'$usr_URL', '$usr_title', '$usr_affil', ".
- "'$usr_phone', '$encoding', NULL, 'newuser', ".
+ "'$usr_phone', 'tcsh', '$encoding', NULL, 'newuser', ".
"date_add(now(), interval 1 year), now())");
DBQueryFatal("INSERT INTO user_stats (uid) VALUES ('$proj_head_uid')");
diff --git a/www/showstuff.php3 b/www/showstuff.php3
index c5945d1cc95bf10d3d83b4c0a216a44f40428732..d3c625deebbf19063e2d9501b51ad33a6475111e 100644
--- a/www/showstuff.php3
+++ b/www/showstuff.php3
@@ -367,6 +367,7 @@ function SHOWUSER($uid) {
$usr_country = stripslashes($row[usr_country]);
$usr_name = stripslashes($row[usr_name]);
$usr_phone = $row[usr_phone];
+ $usr_shell = stripslashes($row[usr_shell]);
$usr_title = stripslashes($row[usr_title]);
$usr_affil = stripslashes($row[usr_affil]);
$status = $row[status];
@@ -465,6 +466,11 @@ function SHOWUSER($uid) {
Phone #: |
$usr_phone |
\n";
+
+ echo "
+ Shell: |
+ $usr_shell |
+
\n";
echo "
Title/Position: |