diff --git a/apps/webconference/WebConference.cpp b/apps/webconference/WebConference.cpp index 2f753aa3..25f30fbc 100644 --- a/apps/webconference/WebConference.cpp +++ b/apps/webconference/WebConference.cpp @@ -338,6 +338,10 @@ void WebConferenceFactory::invoke(const string& method, } else if(method == "kickout"){ kickout(args, ret); ret.push(getServerInfoString().c_str()); + } else if(method == "changeRoomAdminpin"){ + args.assertArrayFmt("sss"); + changeRoomAdminpin(args, ret); + ret.push(getServerInfoString().c_str()); } else if(method == "serverInfo"){ serverInfo(args, ret); ret.push(getServerInfoString().c_str()); @@ -374,6 +378,7 @@ void WebConferenceFactory::invoke(const string& method, ret.push("mute"); ret.push("unmute"); ret.push("kickout"); + ret.push("changeRoomAdminpin"); ret.push("serverInfo"); ret.push("vqConferenceFeedback"); ret.push("vqCallFeedback"); @@ -458,7 +463,7 @@ void WebConferenceFactory::roomInfo(const AmArg& args, AmArg& ret) { assertArgCStr(args.get(0)); assertArgCStr(args.get(1)); string room = args.get(0).asCStr(); - string adminpin = args.get(1).asCStr();; + string adminpin = args.get(1).asCStr(); rooms_mut.lock(); ConferenceRoom* r = getRoom(room, adminpin); @@ -637,6 +642,24 @@ void WebConferenceFactory::getRoomPassword(const AmArg& args, AmArg& ret) { ret.push(res.c_str()); } +void WebConferenceFactory::changeRoomAdminpin(const AmArg& args, AmArg& ret) { + string room = args.get(0).asCStr(); + string adminpin = args.get(1).asCStr(); + string new_adminpin = args.get(2).asCStr(); + + rooms_mut.lock(); + ConferenceRoom* r = getRoom(room, adminpin); + if (NULL == r) { + ret.push(1); + ret.push("wrong adminpin"); + } else { + r->adminpin = new_adminpin; + ret.push(0); + ret.push("OK"); + } + rooms_mut.unlock(); +} + void WebConferenceFactory::listRooms(const AmArg& args, AmArg& ret) { string pwd = args.get(0).asCStr(); diff --git a/apps/webconference/WebConference.h b/apps/webconference/WebConference.h index 01e9c17d..a773fbd5 100644 --- a/apps/webconference/WebConference.h +++ b/apps/webconference/WebConference.h @@ -150,6 +150,7 @@ public: void kickout(const AmArg& args, AmArg& ret); void mute(const AmArg& args, AmArg& ret); void unmute(const AmArg& args, AmArg& ret); + void changeRoomAdminpin(const AmArg& args, AmArg& ret); void serverInfo(const AmArg& args, AmArg& ret); void vqRoomFeedback(const AmArg& args, AmArg& ret); void vqCallFeedback(const AmArg& args, AmArg& ret); diff --git a/doc/Readme.webconference b/doc/Readme.webconference index d8f98a2c..ddbf191c 100644 --- a/doc/Readme.webconference +++ b/doc/Readme.webconference @@ -92,6 +92,13 @@ unmute(string room, string adminpin, string call_tag) : 1 wrong adminpin 2 call does not exist in room ---- +changeRoomAdminpin(string room, string adminpin, string new_adminpin) : + int code, string result + + code/result: + 0 OK + 1 wrong adminpin +---- serverInfo(): string serverInfo ----