Commit ba69c7a1 authored by Russ Fish's avatar Russ Fish

Pass project and user arguments in the XML file as an idx, not a name.

parent 68f6ddd6
......@@ -15,7 +15,7 @@ use Data::Dumper;
#
sub usage()
{
print("Usage: moduserinfo [-v] <xmlfile>\n");
print("Usage: moduserinfo [-d] [-v] <xmlfile>\n");
exit(-1);
}
my $optlist = "dv";
......@@ -130,7 +130,7 @@ my $SLOT_ADMINONLY = 0x4; # Only admins can set this field.
#
my %xmlfields =
# XML Field Name DB slot name Flags Default
("uid" => ["uid", $SLOT_REQUIRED],
("uid" => ["uid_idx", $SLOT_REQUIRED],
# The rest are optional, so we can skip passing ones that are not changing.
"usr_name" => ["usr_name", $SLOT_OPTIONAL],
......@@ -231,7 +231,7 @@ foreach my $key (keys(%{ $xmlparse->{'attribute'} })) {
next;
}
$moduserinfo_args{$dbslot} = $value;
$moduserinfo_args{$key} = $value;
}
UserError()
if (keys(%errors));
......@@ -242,7 +242,7 @@ UserError()
my $target_uid = $moduserinfo_args{"uid"};
my $target_user = User->Lookup($target_uid);
if (!defined($target_user)) {
UserError("uid: No such user name");
UserError("uid: No such user ($target_uid)");
}
if (!$target_user->AccessCheck($this_user, TB_USERINFO_MODIFYINFO())) {
UserError("UserInfo: Not enough permission");
......
......@@ -130,7 +130,7 @@ my $SLOT_ADMINONLY = 0x4; # Only admins can set this field.
#
my %xmlfields =
# XML Field Name DB slot name Flags Default
("project" => ["project", $SLOT_REQUIRED],
("project" => ["pid_idx", $SLOT_REQUIRED],
"group_id" => ["group_id", $SLOT_REQUIRED],
"group_leader" => ["group_leader", $SLOT_REQUIRED],
"group_description"=> ["group_description",$SLOT_OPTIONAL, ""]);
......@@ -214,7 +214,7 @@ foreach my $key (keys(%{ $xmlparse->{'attribute'} })) {
next;
}
$newgroup_args{$dbslot} = $value;
$newgroup_args{$key} = $value;
}
UserError()
if (keys(%errors));
......
......@@ -15,7 +15,7 @@ use Data::Dumper;
#
sub usage()
{
print("Usage: newmmlist [-v] <xmlfile>\n");
print("Usage: newmmlist [-d] [-v] <xmlfile>\n");
exit(-1);
}
my $optlist = "dv";
......@@ -131,7 +131,8 @@ my $SLOT_ADMINONLY = 0x4; # Only admins can set this field.
#
my %xmlfields =
# XML Field Name DB slot name Flags Default
("pid" => ["pid", $SLOT_REQUIRED],
("project" => ["pid_idx", $SLOT_REQUIRED],
"password1" => ["password1", $SLOT_REQUIRED],
"password2" => ["password2", $SLOT_REQUIRED],
"listname" => ["listname", $SLOT_REQUIRED],
......@@ -216,7 +217,7 @@ foreach my $key (keys(%{ $xmlparse->{'attribute'} })) {
next;
}
$newmmlist_args{$dbslot} = $value;
$newmmlist_args{$key} = $value;
}
UserError()
if (keys(%errors));
......@@ -224,9 +225,9 @@ UserError()
#
# Now do special checks.
#
my $project = Project->Lookup($newmmlist_args{"pid"});
my $project = Project->Lookup($newmmlist_args{"project"});
if (!defined($project)) {
UserError("Project: No such project");
UserError("Project: No such project ($project)");
}
if (!$project->AccessCheck($this_user, TB_PROJECT_READINFO())) {
UserError("Project: Not enough permission");
......
......@@ -15,7 +15,7 @@ use Data::Dumper;
#
sub usage()
{
print("Usage: newosid [-v] <xmlfile>\n");
print("Usage: newosid [-d] [-v] <xmlfile>\n");
exit(-1);
}
my $optlist = "dv";
......@@ -223,7 +223,7 @@ foreach my $key (keys(%{ $xmlparse->{'attribute'} })) {
next;
}
$newosid_args{$dbslot} = $value;
$newosid_args{$key} = $value;
}
UserError()
if (keys(%errors));
......@@ -231,9 +231,9 @@ UserError()
#
# Now do special checks.
#
my $project = Project->Lookup($newosid_args{"pid"});
my $project = Project->Lookup($newosid_args{"project"});
if (!defined($project)) {
UserError("Project: No such project");
UserError("Project: No such project ($project)");
}
if (!$project->AccessCheck($this_user, TB_PROJECT_MAKEOSID())) {
UserError("Project: Not enough permission");
......@@ -279,8 +279,8 @@ exit(0)
#
my $osname = $newosid_args{"osname"};
delete($newosid_args{"osname"});
# Ditto the pid.
delete($newosid_args{"pid"});
# Ditto the project.
delete($newosid_args{"project"});
my $usrerr;
my $new_osinfo = OSinfo->Create($project, $this_user, $osname,
......
......@@ -567,7 +567,7 @@ REPLACE INTO table_regex VALUES ('experiments','sync_server','text','redirect','
REPLACE INTO table_regex VALUES ('groups','project','text','redirect','projects:pid',0,0,NULL);
REPLACE INTO table_regex VALUES ('groups','gid','text','regex','^[a-zA-Z][-\\w]+$',2,12,NULL);
REPLACE INTO table_regex VALUES ('groups','gid_idx','text','regex','^[\\d]+$',2,12,NULL);
REPLACE INTO table_regex VALUES ('groups','gid_idx','text','regex','^[\\d]+$',1,12,NULL);
REPLACE INTO table_regex VALUES ('groups','group_id','text','redirect','groups:gid',2,12,NULL);
REPLACE INTO table_regex VALUES ('groups','group_leader','text','redirect','users:uid',2,8,NULL);
REPLACE INTO table_regex VALUES ('groups','group_description','text','redirect','default:tinytext',0,256,NULL);
......@@ -593,6 +593,7 @@ REPLACE INTO table_regex VALUES ('projects','URL','text','redirect','default:tin
REPLACE INTO table_regex VALUES ('reserved','vname','text','redirect','virt_nodes:vname',1,32,NULL);
REPLACE INTO table_regex VALUES ('users','uid','text','regex','^[a-zA-Z][\\w]+$',2,8,NULL);
REPLACE INTO table_regex VALUES ('users','uid_idx','text','regex','^[\\d]+$',1,12,NULL);
REPLACE INTO table_regex VALUES ('users','usr_phone','text','regex','^[-\\d\\(\\)\\+\\.x ]+$',7,64,NULL);
REPLACE INTO table_regex VALUES ('users','usr_name','text','regex','^[-\\w\\. ]+$',4,64,NULL);
REPLACE INTO table_regex VALUES ('users','usr_email','text','regex','^([-\\w\\+\\.]+)\\@([-\\w\\.]+)$',3,64,NULL);
......@@ -877,7 +878,7 @@ REPLACE INTO table_regex VALUES ('virt_firewalls','fwname','text','redirect','vi
REPLACE INTO table_regex VALUES ('virt_firewalls','type','text','regex','^(ipfw|ipfw2|ipchains|ipfw2-vlan)$',0,0,NULL);
REPLACE INTO table_regex VALUES ('virt_firewalls','style','text','regex','^(open|closed|basic|emulab)$',0,0,NULL);
REPLACE INTO table_regex VALUES ('mailman_lists','pid','text','redirect','projects:pid',0,0,NULL);
REPLACE INTO table_regex VALUES ('mailman_lists','pid_idx','text','redirect','projects:pid_idx',0,0,NULL);
REPLACE INTO table_regex VALUES ('mailman_lists','password1','text','redirect','default:tinytext',0,0,NULL);
REPLACE INTO table_regex VALUES ('mailman_lists','password2','text','redirect','default:tinytext',0,0,NULL);
REPLACE INTO table_regex VALUES ('mailman_lists','fullname','text','redirect','users:usr_email',0,0,NULL);
......
......@@ -115,7 +115,7 @@ class Group
}
# Add these. Maybe caller should do this?
$args["project"] = $project->pid();
$args["project"] = $project->pid_idx();
fwrite($fp, "<group>\n");
foreach ($args as $name => $value) {
......
......@@ -329,10 +329,6 @@ if (count($errors)) {
#
$args = array();
if (isset($formfields["pid"]) &&
$formfields["pid"] != "none" && $formfields["pid"] != "") {
$args["pid"] = $formfields["pid"];
}
if (isset($formfields["password1"]) && $formfields["password1"] != "") {
$args["password1"] = $formfields["password1"];
}
......@@ -346,7 +342,7 @@ if (isset($formfields["fullname"]) && $formfields["fullname"] != "") {
$args["fullname"] = $formfields["fullname"];
}
if (! ($result = NewMmList($uid, $args, $errors))) {
if (! ($result = NewMmList($uid, $project, $args, $errors))) {
# Always respit the form so that the form fields are not lost.
# I just hate it when that happens so lets not be guilty of it ourselves.
SPITFORM($formfields, $errors);
......@@ -362,7 +358,7 @@ header("Location: ${MAILMANURL}/admin/${listname}/?adminpw=${formfields["passwor
#
# When there's an MmList class, this will be a Class function to make a new one...
#
function NewMmList($uid, $args, &$errors) {
function NewMmList($uid, $project, $args, &$errors) {
global $suexec_output, $suexec_output_array, $TBADMINGROUP;
#
......@@ -380,6 +376,9 @@ function NewMmList($uid, $args, &$errors) {
return null;
}
# Add these. Maybe caller should do this?
$args["project"] = $project->pid_idx();
fwrite($fp, "<MmList>\n");
foreach ($args as $name => $value) {
fwrite($fp, "<attribute name=\"$name\">");
......
......@@ -172,7 +172,7 @@ class User
}
# Add these. Maybe caller should do this?
$args["uid"] = $target_user->uid();
$args["uid"] = $target_user->uid_idx();
fwrite($fp, "<userinfo>\n");
foreach ($args as $name => $value) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment