return;
}
if (m->cmd[0] == "pg") {
- if (!session->caps.get_allow_all() && !_allowed_command(session, m->cmd)) {
- r = -EACCES;
- rs = "access denied";
- goto out;
- }
pgmon()->dispatch(m);
return;
}
if (m->cmd[0] == "mon") {
- if (!session->caps.get_allow_all() && !_allowed_command(session, m->cmd)) {
- r = -EACCES;
- rs = "access denied";
- goto out;
- }
monmon()->dispatch(m);
return;
}
bufferlist rdata;
stringstream ss;
+ MonSession *session = m->get_session();
+ if (!session ||
+ (!session->caps.get_allow_all() &&
+ !session->caps.check_privileges(PAXOS_MONMAP, MON_CAP_R) &&
+ !mon->_allowed_command(session, m->cmd))) {
+ mon->reply_command(m, -EACCES, "access denied", paxos->get_version());
+ return true;
+ }
+
vector<const char*> args;
for (unsigned i = 1; i < m->cmd.size(); i++)
args.push_back(m->cmd[i].c_str());
stringstream ss;
string rs;
int err = -EINVAL;
+
+ MonSession *session = m->get_session();
+ if (!session ||
+ (!session->caps.get_allow_all() &&
+ !session->caps.check_privileges(PAXOS_MONMAP, MON_CAP_R) &&
+ !mon->_allowed_command(session, m->cmd))) {
+ mon->reply_command(m, -EACCES, "access denied", paxos->get_version());
+ return true;
+ }
+
if (m->cmd.size() > 1) {
if (m->cmd.size() == 4 && m->cmd[1] == "add") {
string name = m->cmd[2];
bufferlist rdata;
stringstream ss;
+ MonSession *session = m->get_session();
+ if (!session ||
+ (!session->caps.get_allow_all() &&
+ !session->caps.check_privileges(PAXOS_PGMAP, MON_CAP_R) &&
+ !mon->_allowed_command(session, m->cmd))) {
+ mon->reply_command(m, -EACCES, "access denied", rdata, paxos->get_version());
+ return true;
+ }
+
vector<const char*> args;
for (unsigned i = 1; i < m->cmd.size(); i++)
args.push_back(m->cmd[i].c_str());
int r = -EINVAL;
string rs;
+ MonSession *session = m->get_session();
+ if (!session ||
+ (!session->caps.get_allow_all() &&
+ !session->caps.check_privileges(PAXOS_PGMAP, MON_CAP_W) &&
+ !mon->_allowed_command(session, m->cmd))) {
+ mon->reply_command(m, -EACCES, "access denied", paxos->get_version());
+ return true;
+ }
+
if (m->cmd.size() >= 1 && m->cmd[1] == "force_create_pg") {
if (m->cmd.size() <= 2) {
ss << "usage: pg force_create_pg <pg>";