return;
}
+ bool access_cmd = _allowed_command(session, m->cmd);
+ bool access_r = (session->caps.check_privileges(PAXOS_MONMAP, MON_CAP_R) ||
+ access_cmd);
+ bool access_all = (session->caps.get_allow_all() || access_cmd);
+
dout(0) << "handle_command " << *m << dendl;
bufferlist rdata;
string rs;
return;
}
if (m->cmd[0] == "log") {
- if (!session->caps.check_privileges(PAXOS_MONMAP, MON_CAP_R) &&
- !_allowed_command(session, m->cmd)) {
+ if (!access_r) {
r = -EACCES;
rs = "access denied";
goto out;
return;
}
if (m->cmd[0] == "stop_cluster") {
- if (!session->caps.get_allow_all() && !_allowed_command(session, m->cmd)) {
+ if (!access_all) {
r = -EACCES;
rs = "access denied";
goto out;
}
if (m->cmd[0] == "injectargs") {
- if (!session->caps.get_allow_all() && !_allowed_command(session, m->cmd)) {
+ if (!access_all) {
r = -EACCES;
rs = "access denied";
goto out;
return;
}
if (m->cmd[0] == "status") {
- if (!session->caps.check_privileges(PAXOS_MONMAP, MON_CAP_R) &&
- !_allowed_command(session, m->cmd)) {
+ if (!access_r) {
r = -EACCES;
rs = "access denied";
goto out;
r = 0;
}
if (m->cmd[0] == "quorum_status") {
- if (!session->caps.check_privileges(PAXOS_MONMAP, MON_CAP_R) &&
- !_allowed_command(session, m->cmd)) {
+ if (!access_r) {
r = -EACCES;
rs = "access denied";
goto out;
}
// make sure our map is readable and up to date
if (!is_leader() && !is_peon()) {
- dout(10) << " waiting for qorum" << dendl;
+ dout(10) << " waiting for quorum" << dendl;
waitfor_quorum.push_back(new C_RetryMessage(this, m));
return;
}
r = 0;
}
if (m->cmd[0] == "mon_status") {
- if (!session->caps.check_privileges(PAXOS_MONMAP, MON_CAP_R) &&
- !_allowed_command(session, m->cmd)) {
+ if (!access_r) {
r = -EACCES;
rs = "access denied";
goto out;
r = 0;
}
if (m->cmd[0] == "health") {
- if (!session->caps.check_privileges(PAXOS_MONMAP, MON_CAP_R) &&
- !_allowed_command(session, m->cmd)) {
+ if (!access_r) {
r = -EACCES;
rs = "access denied";
goto out;
r = 0;
}
if (m->cmd[0] == "heap") {
- if (!session->caps.get_allow_all() && !_allowed_command(session, m->cmd)) {
+ if (!access_all) {
r = -EACCES;
rs = "access denied";
goto out;
ceph_heap_profiler_handle_command(m->cmd, clog);
}
if (m->cmd[0] == "quorum") {
- if (!session->caps.get_allow_all() && !_allowed_command(session, m->cmd)) {
+ if (!access_all) {
r = -EACCES;
rs = "access denied";
goto out;