// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- // vim: ts=8 sw=2 smarttab #include #include "common/ceph_context.h" #include "include/types.h" #include "rgw/rgw_acl.h" #include #include #define dout_subsys ceph_subsys_rgw int main(int argc, char **argv) { RGWACLXMLParser parser; if (!parser.init()) exit(1); char buf[1024]; for (;;) { int done; int len; len = fread(buf, 1, sizeof(buf), stdin); if (ferror(stdin)) { fprintf(stderr, "Read error\n"); exit(-1); } done = feof(stdin); parser.parse(buf, len, done); if (done) break; } RGWAccessControlPolicy *policy = (RGWAccessControlPolicy *)parser.find_first("AccessControlPolicy"); if (policy) { string id="79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be"; dout(10) << hex << policy->get_perm(g_ceph_context, id, RGW_PERM_ALL) << dec << dendl; policy->to_xml(cout); } cout << parser.get_xml() << endl; bufferlist bl; policy->encode(bl); RGWAccessControlPolicy newpol; bufferlist::iterator iter = bl.begin(); newpol.decode(iter); newpol.to_xml(cout); exit(0); }