Commit 198903de authored by jan.koester's avatar jan.koester
Browse files

test

parent 1fc79b47
Loading
Loading
Loading
Loading
Loading
+9 −39
Changes for src/admin.cpp: 9 added lines, 39 removed lines.
Original line number Diff line number Diff line
@@ -1080,50 +1080,20 @@ namespace authdb {
            json_object *jobj = json_object_new_object();
            json_object *jarr = json_object_new_array();

            std::set<std::string> seen_sids;

            // Local in-memory sessions
            for (const SessionData *curdat = AuthSession.firstData(); curdat; curdat = curdat->next()) {
                uuid::uuid sdid;
                curdat->getDid(sdid);

                if ((strcmp(cdid, "admin") == 0 && sdid.empty()) ||
                    (!did.empty() && did == sdid)) {
                    uuid::uuid sid;
                    curdat->getSid(sid);

                    seen_sids.insert(std::string(sid.c_str()));
            std::vector<SessionInfo> sessions;
            AuthSession->listSessions(sessions);

            for (const auto &si : sessions) {
                if ((strcmp(cdid, "admin") == 0 && si.did.empty()) ||
                    (!did.empty() && did == si.did)) {
                    json_object *jsess = json_object_new_object();
                    json_object_object_add(jsess, "sid", json_object_new_string(sid.c_str()));
                    json_object_object_add(jsess, "did", json_object_new_string(sdid.c_str()));
                    json_object_object_add(jsess, "username", json_object_new_string(curdat->getUsername()));
                    json_object_object_add(jsess, "sid", json_object_new_string(si.sid.c_str()));
                    json_object_object_add(jsess, "did", json_object_new_string(si.did.c_str()));
                    json_object_object_add(jsess, "username", json_object_new_string(si.username.c_str()));
                    json_object_array_add(jarr, jsess);
                }
            }

            // Cluster sessions from all nodes (filtered by domain)
            if (g_Cluster && g_Cluster->isRunning()) {
                std::vector<Cluster::SessionInfo> csessions;
                g_Cluster->listAllSessions(csessions);
                for (const auto &cs : csessions) {
                    std::string sidstr = cs.sid.c_str();
                    if (seen_sids.count(sidstr))
                        continue;

                    if ((strcmp(cdid, "admin") == 0 && cs.did.empty()) ||
                        (!did.empty() && did == cs.did)) {
                        seen_sids.insert(sidstr);

                        json_object *jsess = json_object_new_object();
                        json_object_object_add(jsess, "sid", json_object_new_string(cs.sid.c_str()));
                        json_object_object_add(jsess, "did", json_object_new_string(cs.did.c_str()));
                        json_object_object_add(jsess, "username", json_object_new_string(cs.username.c_str()));
                        json_object_array_add(jarr, jsess);
                    }
                }
            }

            json_object_object_add(jobj, "sessions", jarr);
            sendJson(curreq, jobj);
            json_object_put(jobj);
@@ -1133,7 +1103,7 @@ namespace authdb {
        void apiRemoveSession(libhttppp::HttpRequest &curreq, const char *csid) {
            uuid::uuid sid;
            sid = csid;
            AuthSession.remSession(sid);
            AuthSession->remSession(sid);

            json_object *jobj = json_object_new_object();
            json_object_object_add(jobj, "status", json_object_new_string("ok"));