function cvs_change_password($cvs_user, $new_pass, $cvs_project) { $all_cvs_users = cvs_read_passwd($cvs_project); $cvs_fields = $all_cvs_users[$cvs_user]; if (!is_null($cvs_fields)) { $cvs_fields[0] = $new_pass; $all_cvs_users[$cvs_user] = $cvs_fields; cvs_write_file($all_cvs_users, $cvs_project); cvs_log(1, "Updated password for {$cvs_user}"); } else { cvs_log(3, "No such user- {$cvs_user}"); } }
function update_cvs_repositories() { global $cvsdir_prefix; global $err; $res = db_query("select groups.group_id,groups.unix_group_name,groups.enable_anonscm,groups.enable_pserver" . " FROM groups, plugins, group_plugin" . " WHERE groups.status != 'P' " . " AND groups.group_id=group_plugin.group_id " . " AND group_plugin.plugin_id=plugins.plugin_id " . " AND plugins.plugin_name='scmcvs'"); for ($i = 0; $i < db_numrows($res); $i++) { /* Simply call cvscreate.sh */ $project =& group_get_object(db_result($res, $i, 'group_id')); // get the group object for the current group if (!$project || !is_object($project)) { echo "Error Getting Group." . " Id : " . db_result($res, $i, 'group_id') . " , Name : " . db_result($res, $i, 'unix_group_name'); break; // continue to the next project } $repositoryPath = $cvsdir_prefix . "/" . $project->getUnixName(); if (is_dir($repositoryPath)) { $writersContent = ''; $readersContent = ''; $passwdContent = ''; if ($project->enableAnonSCM()) { $repositoryMode = 02775; if ($project->enablePserver()) { $readersContent = 'anonymous'; $passwdContent = 'anonymous:8Z8wlZezt48mY'; } } else { $repositoryMode = 02770; } chmod($repositoryPath, $repositoryMode); cvs_write_file($repositoryPath . '/CVSROOT/writers', $writersContent, 0); cvs_write_file($repositoryPath . '/CVSROOT/readers', $readersContent, 0); cvs_write_file($repositoryPath . '/CVSROOT/passwd', $passwdContent, 0); if ($project->usesPlugin('cvssyncmail')) { add_sync_mail($project->getUnixName()); } if ($project->usesPlugin('cvstracker')) { add_cvstracker($project->getUnixName()); } add_acl_check($project->getUnixName()); } elseif (is_file($repositoryPath)) { $err .= $repositoryPath . ' already exists as a file'; } else { // Creates the repository // first, make sure the UNIX group exists $data = exec('getent group ' . $project->getUnixName()); if (empty($data)) { // group doesn't exist -- cronjob that creates users and groups hasn't run yet continue; } $enableAnonSCM = $project->enableAnonSCM() ? 1 : 0; $enablePserver = $project->enablePserver() ? 1 : 0; system(dirname(__FILE__) . '/cvscreate.sh ' . $project->getUnixName() . ' ' . $project->getUnixName() . ' ' . $enableAnonSCM . ' ' . $enablePserver); if ($project->usesPlugin('cvssyncmail')) { add_sync_mail($project->getUnixName()); } if ($project->usesPlugin('cvstracker')) { add_cvstracker($project->getUnixName()); } add_acl_check($project->getUnixName()); } } // // Move CVS trees for deleted groups // $res8 = db_query("SELECT unix_group_name FROM deleted_groups WHERE isdeleted = 0;"); $err .= db_error(); $rows = db_numrows($res8); for ($k = 0; $k < $rows; $k++) { $deleted_group_name = db_result($res8, $k, 'unix_group_name'); if (!is_dir($cvsdir_prefix . "/.deleted")) { system("mkdir " . $cvsdir_prefix . "/.deleted"); } system("mv -f {$cvsdir_prefix}/{$deleted_group_name}/ {$cvsdir_prefix}/.deleted/"); system("chown -R root:root {$cvsdir_prefix}/.deleted/{$deleted_group_name}"); system("chmod -R o-rwx {$cvsdir_prefix}/.deleted/{$deleted_group_name}"); $res9 = db_query("UPDATE deleted_groups set isdeleted = 1 WHERE unix_group_name = '{$deleted_group_name}';"); $err .= db_error(); } }