}
-bool Monitor::_allowed_command(MonSession *s, map<string, cmd_vartype>& cmd)
-{
- bool retval = false;
-
- if (s->caps.is_allow_all()) {
- dout(10) << __func__ << " allow_all" << dendl;
- return true;
- }
-
- string prefix;
- cmd_getval(g_ceph_context, cmd, "prefix", prefix);
-
- map<string,string> strmap;
- for (map<string, cmd_vartype>::const_iterator p = cmd.begin();
- p != cmd.end(); ++p) {
- if (p->first == "prefix")
- continue;
- if (p->first == "caps") {
- vector<string> cv;
- if (cmd_getval(g_ceph_context, cmd, "caps", cv) &&
- cv.size() % 2 == 0) {
- for (unsigned i = 0; i < cv.size(); i += 2) {
- string k = string("caps_") + cv[i];
- strmap[k] = cv[i + 1];
- }
- continue;
- }
- }
- strmap[p->first] = cmd_vartype_stringify(p->second);
- }
-
- dout(20) << __func__ << " strmap " << strmap << dendl;
- if (s->caps.is_capable(g_ceph_context, s->inst.name,
- "", prefix, strmap, false, false, true)) {
- retval = true;
- }
-
- dout(10) << __func__ << " = " << retval << dendl;
- return retval;
-}
-
void Monitor::sync_force(Formatter *f, ostream& ss)
{
bool free_formatter = false;
void handle_get_version(MMonGetVersion *m);
void handle_subscribe(MMonSubscribe *m);
void handle_mon_get_map(MMonGetMap *m);
- bool _allowed_command(MonSession *s, map<std::string, cmd_vartype>& cmd);
bool _allowed_command(MonSession *s, string &module, string& prefix,
map<string,cmd_vartype>& cmdmap);
void _mon_status(Formatter *f, ostream& ss);