return;
}
- bool access_cmd;
- bool access_r;
- bool access_all;
-
string module;
string err;
get_str_vec(prefix, fullcmd);
module = fullcmd[0];
- access_cmd = _allowed_command(session, cmdmap);
- access_r = (session->is_capable("mon", MON_CAP_R) || access_cmd);
- access_all = (session->caps.is_allow_all() || access_cmd);
-
if (!_allowed_command(session, module, prefix, cmdmap)) {
dout(1) << __func__ << " access denied" << dendl;
reply_command(m, -EACCES, "access denied", 0);
}
if (module == "config-key") {
- if (!access_all) {
- r = -EACCES;
- rs = "access denied";
- goto out;
- }
config_key_service->dispatch(m);
return;
}
}
if (prefix == "compact") {
- if (!access_all) {
- r = -EACCES;
- rs = "access denied";
- goto out;
- }
dout(1) << "triggering manual compaction" << dendl;
utime_t start = ceph_clock_now(g_ceph_context);
store->compact();
r = 0;
}
else if (prefix == "injectargs") {
- if (!access_all) {
- r = -EACCES;
- rs = "access denied";
- goto out;
- }
vector<string> injected_args;
cmd_getval(g_ceph_context, cmdmap, "injected_args", injected_args);
if (!injected_args.empty()) {
} else if (prefix == "status" ||
prefix == "health" ||
prefix == "df") {
- if (!access_r) {
- r = -EACCES;
- rs = "access denied";
- goto out;
- }
-
string detail;
cmd_getval(g_ceph_context, cmdmap, "detail", detail);
rs = "";
r = 0;
} else if (prefix == "report") {
- if (!access_r) {
- r = -EACCES;
- rs = "access denied";
- goto out;
- }
// this must be formatted, in its current form
if (!f)
rs = ss2.str();
r = 0;
} else if (prefix == "quorum_status") {
- 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 quorum" << dendl;
rs = "";
r = 0;
} else if (prefix == "mon_status") {
- if (!access_r) {
- r = -EACCES;
- rs = "access denied";
- goto out;
- }
_mon_status(f.get(), ds);
rdata.append(ds);
rs = "";
rs = ds.str();
r = 0;
} else if (prefix == "heap") {
- if (!access_all) {
- r = -EACCES;
- rs = "access denied";
- goto out;
- }
if (!ceph_using_tcmalloc())
rs = "tcmalloc not enabled, can't use heap profiler commands\n";
else {
r = 0;
}
} else if (prefix == "quorum") {
- if (!access_all) {
- r = -EACCES;
- rs = "access denied";
- goto out;
- }
string quorumcmd;
cmd_getval(g_ceph_context, cmdmap, "quorumcmd", quorumcmd);
if (quorumcmd == "exit") {
rs = "started responding to quorum, initiated new election";
r = 0;
}
- } else if (!access_cmd) {
- r = -EACCES;
- rs = "access denied";
}
out: