/** * @param $formData * @param string $entryPoint * @return bool */ function tryModifySubmit( $formData, $entryPoint = 'internal' ) { $sudoer = OpenStackNovaSudoer::getSudoerByName( $formData['sudoername'] ); if ( $sudoer ) { if ( $formData['users'] ) { $users = explode( ',', $formData['users'] ); } else { $users = array(); } if ( $formData['hosts'] ) { $hosts = explode( ',', $formData['hosts'] ); } else { $hosts = array(); } if ( $formData['commands'] ) { $commands = explode( ',', $formData['commands'] ); } else { $commands = array(); } if ( $formData['options'] ) { $options = explode( ',', $formData['options'] ); } else { $options = array(); } $success = $sudoer->modifySudoer( $users, $hosts, $commands, $options ); if ( ! $success ) { $this->getOutput()->addWikiMsg( 'openstackmanager-modifysudoerfailed' ); return true; } $this->getOutput()->addWikiMsg( 'openstackmanager-modifiedsudoer' ); } else { $this->getOutput()->addWikiMsg( 'openstackmanager-nonexistantsudoer' ); } $out = '<br />'; $out .= Linker::link( $this->getTitle(), wfMsgHtml( 'openstackmanager-backsudoerlist' ) ); $this->getOutput()->addHTML( $out ); return true; }
/** * @param $formData * @param string $entryPoint * @return bool */ function tryModifySubmit($formData, $entryPoint = 'internal') { $sudoer = OpenStackNovaSudoer::getSudoerByName($formData['sudoername'], $formData['project']); if ($sudoer) { if ($formData['commands']) { $commands = explode("\n", $formData['commands']); } else { $commands = array(); } if ($formData['options']) { $options = explode("\n", $formData['options']); } else { $options = array(); } if ($formData['requirepassword']) { $options[] = 'authenticate'; } else { $options[] = '!authenticate'; } $projectName = $formData['project']; $project = OpenStackNovaProject::getProjectByName($projectName); $projectuids = $project->getMemberUids(); $projectserviceusers = $project->getServiceUsers(); $projectGroup = "%" . $project->getProjectGroup()->getProjectGroupName(); $users = $this->removeALLFromUserKeys($formData['users']); $formerusers = $sudoer->getSudoerUsers(); foreach ($formerusers as $candidate) { # Anything in this list that isn't a user or ALL # wasn't exposed to user selection so needs to stay. if ($candidate != $projectGroup) { if (!in_array($candidate, $projectuids) && !in_array($candidate, $projectserviceusers)) { $users[] = $candidate; } } } $runasusers = $this->removeALLFromRunAsUserKeys($formData['runas']); foreach ($sudoer->getSudoerRunAsUsers() as $candidate) { if ($candidate != $projectGroup && $candidate != 'ALL') { if (!in_array($candidate, $projectuids) && !in_array($candidate, $projectserviceusers)) { $runasusers[] = $candidate; } } } $success = $sudoer->modifySudoer($users, $runasusers, $commands, $options); if (!$success) { $this->getOutput()->addWikiMsg('openstackmanager-modifysudoerfailed'); return true; } $this->getOutput()->addWikiMsg('openstackmanager-modifiedsudoer'); } else { $this->getOutput()->addWikiMsg('openstackmanager-nonexistantsudoer'); } $out = '<br />'; $out .= Linker::link($this->getPageTitle(), $this->msg('openstackmanager-backsudoerlist')->escaped()); $this->getOutput()->addHTML($out); return true; }