_("Your account"))); dual_begin(array()); print("
" . _("You have not authenticated yourself to the system yet with your") . " " . _("username") . " " . _("and") . " " . _("password") . ". " . _("You will not be able to use this section of the website without authenticating yourself first. So, please continue and login using the form on the right hand side.") . "
\n"); dual_middle(array()); show_account_details(array()); dual_end(array()); generic_footer(array()); exit; } if (($HTTP_GET_VARS["sort"] == "gid") || ($HTTP_POST_VARS["sort"] == "gid")) $sortorder = "gid"; else if (($HTTP_GET_VARS["sort"] == "gname") || ($HTTP_POST_VARS["sort"] == "gname")) $sortorder = "gname"; else if (($HTTP_GET_VARS["sort"] == "gtype") || ($HTTP_POST_VARS["sort"] == "gtype")) $sortorder = "gtype"; else $sortorder = "none"; $groups_gid = array(); $groups_name = array(); $groups_members = array(); $groups_type = array(); endgrent(); while ($group_info = getgrent()) { if (($group_info["gr_gid"] >= 500) && ($group_info["gr_gid"] <= 65000)) { array_push($groups_gid, $group_info["gr_gid"]); array_push($groups_name, $group_info["gr_name"]); array_push($groups_members, $group_info["gr_mem"]); array_push($groups_type, "Unknown"); } } endgrent(); $authp = popen("/usr/bin/sudo /usr/sbin/authconfig --openfiler --kickstart", "r"); $i = 0; while (!feof($authp)) $aresult[$i++] = fgets($authp, 4096); pclose($authp); if (strncasecmp($aresult[9], "YES", 3) == 0) { // add NIS groups $nis_command = "/usr/bin/sudo /usr/bin/ypcat group"; $groupp = popen($nis_command, "r"); $i = 0; while (!feof($groupp)) { $gresult[$i] = explode(":", fgets($groupp, 4096)); foreach (($gresult[$i]) as $gresultitem) $gresultitem = trim($gresultitem); if ((strlen($gresult[$i][0]) > 0) && ($gresult[$i][2] >= 500) && ($gresult[$i][2] <= 65000)) { for ($j = 0; $j < count($groups_gid); $j++) if (($groups_gid[$j] == $gresult[$i][2]) && ($groups_name[$j] == $gresult[$i][0]) && ($groups_type[$j] == "Unknown")) $groups_type[$j] = "NIS"; } $i++; } pclose($groupp); } if (strncasecmp($aresult[5], "YES", 3) == 0) { // add LDAP groups } if (strncasecmp($aresult[2], "YES", 3) == 0) { // add Hesiod groups } // add local groups $groupp = popen("/usr/bin/sudo /bin/cat /etc/group", "r"); $i = 0; while (!feof($groupp)) { $gresult[$i] = explode(":", fgets($groupp, 4096)); foreach (($gresult[$i]) as $gresultitem) $gresultitem = trim($gresultitem); if ((strlen($gresult[$i][0]) > 0) && ($gresult[$i][2] >= 500) && ($gresult[$i][2] <= 65000)) { for ($j = 0; $j < count($groups_gid); $j++) if (($groups_gid[$j] == $gresult[$i][2]) && ($groups_name[$j] == $gresult[$i][0]) && ($groups_type[$j] == "Unknown")) $groups_type[$j] = "Local"; } $i++; } pclose($groupp); $users_uid = array(); $users_name = array(); $users_gid = array(); $users_gname = array(); $users_type = array(); endpwent(); while ($user_info = getpwent()) { if (($user_info["pw_uid"] >= 500) && ($user_info["pw_uid"] <= 65000)) { array_push($users_uid, $user_info["pw_uid"]); array_push($users_name, $user_info["pw_name"]); $ugid = $user_info["pw_gid"]; array_push($users_gid, $ugid); $found = 0; for ($i = 0; $i < count($groups_gid); $i++) if ($groups_gid[$i] == $ugid) { array_push($users_gname, $groups_name[$i]); $found = 1; break; } if ($found == 0) array_push($users_gname, "N/A"); array_push($users_type, "Unknown"); } } endpwent(); if (strncasecmp($aresult[9], "YES", 3) == 0) { // add NIS users $nis_command = "/usr/bin/sudo /usr/bin/ypcat passwd"; $userp = popen($nis_command, "r"); $i = 0; while (!feof($userp)) { $uresult[$i] = explode(":", fgets($userp, 4096)); foreach (($uresult[$i]) as $uresultitem) $uresultitem = trim($uresultitem); if ((strlen($uresult[$i][0]) > 0) && ($uresult[$i][2] >= 500) && ($uresult[$i][2] <= 65000)) { for ($j = 0; $j < count($users_uid); $j++) if (($users_uid[$j] == $uresult[$i][2]) && ($users_name[$j] == $uresult[$i][0]) && ($users_type[$j] == "Unknown")) $users_type[$j] = "NIS"; } $i++; } pclose($userp); } if (strncasecmp($aresult[5], "YES", 3) == 0) { // add LDAP users } if (strncasecmp($aresult[2], "YES", 3) == 0) { // add Hesiod users } // add local users $userp = popen("/usr/bin/sudo /bin/cat /etc/passwd", "r"); $i = 0; while (!feof($userp)) { $uresult[$i] = explode(":", fgets($userp, 4096)); foreach (($uresult[$i]) as $uresultitem) $uresultitem = trim($uresultitem); if ((strlen($uresult[$i][0]) > 0) && ($uresult[$i][2] >= 500) && ($uresult[$i][2] <= 65000)) { for ($j = 0; $j < count($users_uid); $j++) if (($users_uid[$j] == $uresult[$i][2]) && ($users_name[$j] == $uresult[$i][0]) && ($users_type[$j] == "Unknown")) $users_type[$j] = "Local"; } $i++; } pclose($userp); if ((count($HTTP_POST_VARS) > 0) || (count($HTTP_GET_VARS) > 0)) if (($HTTP_GET_VARS["request"] == "delete") || ($HTTP_POST_VARS["request"] == "create") || ($HTTP_POST_VARS["request"] == "changepassword") || ($HTTP_POST_VARS["request"] == "setusers")) { if ($HTTP_GET_VARS["request"] == "delete") { if ((strlen($HTTP_GET_VARS["gid"]) > 0) && (strlen($HTTP_GET_VARS["gname"]) > 0)) if (($HTTP_GET_VARS["gid"] >= 500) && ($HTTP_GET_VARS["gid"] <= 65000)) if (is_valid_group($HTTP_GET_VARS["gname"])) system("/usr/bin/sudo /usr/sbin/groupdel " . $HTTP_GET_VARS["gname"]); } else if ($HTTP_POST_VARS["request"] == "create") { if ((strlen($HTTP_POST_VARS["gid"]) > 0) && ($HTTP_POST_VARS["gid"] >= 500) && ($HTTP_POST_VARS["gid"] <= 65000)) $gidstr = " -g " . $HTTP_POST_VARS["gid"]; if (strlen($HTTP_POST_VARS["gname"]) > 0) if (is_valid_group($HTTP_POST_VARS["gname"])) system("/usr/bin/sudo /usr/sbin/groupadd -f" . $gidstr . " " . $HTTP_POST_VARS["gname"]); } else if ($HTTP_POST_VARS["request"] == "setusers") { // read and regenerate /etc/groups file $groupfile = file("/etc/group"); $newgroupp = popen("/usr/bin/sudo /usr/bin/tee /etc/group", "w"); for ($l = 0; $l < count($groupfile); $l++) { $line = $groupfile[$l]; if (strlen(trim($line)) <= 0) continue; $gresult = explode(":", $line); foreach ($gresult as $gresultitem) $gresultitem = trim($gresultitem); if ((strlen($gresult[0]) > 0) && ($gresult[2] >= 500) && ($gresult[2] <= 65000) && ($gresult[2] == $HTTP_POST_VARS["gid"])) { for ($i = 0; $i < count($groups_gid); $i++) if ($groups_gid[$i] == $HTTP_POST_VARS["gid"]) { $gstr = $groups_name[$i] . ":x:" . $HTTP_POST_VARS["gid"] . ":"; $coa = 0; for ($j = 0; $j < count($users_uid); $j++) if (($HTTP_POST_VARS["check" . $users_uid[$j]] == "on") || ($users_gid[$j] == $HTTP_POST_VARS["gid"])) { if ($coa > 0) $gstr .= ","; $gstr .= $users_name[$j]; $coa = 1; } fputs($newgroupp, $gstr . "\n"); break; } } else { fputs($newgroupp, $line); } } pclose($newgroupp); } header("Location: ./account_groups.html?sort=" . $sortorder); exit; } generic_header(array("title" => _("Administration Section"))); single_begin(array()); print("Welcome Administrator. The following are various system information and preferences, arranged into tabs. Please click on a tab to open up that category.
To delete a group, click on Delete.
To create a new group, use the form below.
Group names can only be made up of lowercase alphabets and numbers.
You can click on a Local group to add/delete that group's members.
| ">GID | ">Group Name | " align="center">Group Type | ">; background-color: transparent;">Delete | " . $groups_gid[$i] . " | \n"); print("\t");
if ($groups_type[$i] == "Local")
{
?>
| \n");
print("\t" . $groups_type[$i] . " | \n"); print("\t"); if ($groups_type[$i] == "Local") print("Delete"); else print("N/A"); print(" | \n"); print("\n"); } ?>