/*********************************************************************** * doKnown() handles K(nown rooms) command * * Parameters: * * char moreYet TRUE to accept following parameters * char first first parameter if true * ***********************************************************************/ void doKnown(char moreYet, char first) { char letter; char verbose = FALSE; char numMess = FALSE; char done; if (moreYet) first = '\0'; mPrintf("\bKnown "); if (first) oChar(first); do { outFlag = IMPERVIOUS; done = TRUE; letter = (char) (toupper(first ? (char) first : (char) iChar())); switch (letter) { case 'A': mPrintf("\bApplication Rooms "); mPrintf("\n "); listRooms(APLRMS, verbose, numMess); listExterns(); break; case 'D': mPrintf("\bDirectory Rooms "); mPrintf("\n "); listRooms(DIRRMS, verbose, numMess); break; case 'H': mPrintf("\bHallways "); knownhalls(); break; case 'L': mPrintf("\bLimited Access Rooms "); mPrintf("\n "); listRooms(LIMRMS, verbose, numMess); break; case 'N': mPrintf("\bNew Rooms "); mPrintf("\n "); listRooms(NEWRMS, verbose, numMess); break; case 'O': mPrintf("\bOld Rooms "); mPrintf("\n "); listRooms(OLDRMS, verbose, numMess); break; case 'M': mPrintf("\bMail Rooms "); mPrintf("\n "); listRooms(MAILRM, verbose, numMess); break; case 'S': mPrintf("\bShared Rooms "); mPrintf("\n "); listRooms(SHRDRM, verbose, numMess); break; case 'I': mPrintf("\bRoom Info"); mPrintf("\n "); RoomStatus(); break; case '\r': case '\n': listRooms(OLDNEW, verbose, numMess); break; case 'R': mPrintf("\bRooms "); mPrintf("\n "); listRooms(OLDNEW, verbose, numMess); break; case 'V': mPrintf("\bVerbose "); done = FALSE; verbose = TRUE; break; case 'W': mPrintf("\bWindows "); mPrintf("\n "); listRooms(WINDWS, verbose, numMess); break; case 'X': mPrintf("\beXcluded Rooms "); mPrintf("\n "); listRooms(XCLRMS, verbose, numMess); break; case 'Y': mPrintf("\banonYmous Rooms "); mPrintf("\n "); listRooms(ANONRM, verbose, numMess); break; case '#': mPrintf(" of Messages "); done = FALSE; numMess = TRUE; break; default: mPrintf("? "); if (gl_user.expert) break; case '?': nextmenu("known", &(cfg.cnt.knowntut), 1); break; } } while (!done && moreYet); }
void WebConferenceFactory::invoke(const string& method, const AmArg& args, AmArg& ret) { if(method == "roomCreate"){ roomCreate(args, ret); ret.push(getServerInfoString().c_str()); } else if(method == "roomInfo"){ roomInfo(args, ret); ret.push(getServerInfoString().c_str()); } else if(method == "dialout"){ dialout(args, ret); ret.push(getServerInfoString().c_str()); } else if(method == "mute"){ mute(args, ret); ret.push(getServerInfoString().c_str()); } else if(method == "unmute"){ unmute(args, ret); ret.push(getServerInfoString().c_str()); } else if(method == "kickout"){ kickout(args, ret); ret.push(getServerInfoString().c_str()); } else if(method == "serverInfo"){ serverInfo(args, ret); ret.push(getServerInfoString().c_str()); } else if(method == "vqRoomFeedback"){ vqRoomFeedback(args, ret); ret.push(getServerInfoString().c_str()); } else if(method == "vqCallFeedback"){ vqCallFeedback(args, ret); ret.push(getServerInfoString().c_str()); } else if(method == "vqConferenceFeedback"){ vqConferenceFeedback(args, ret); ret.push(getServerInfoString().c_str()); } else if(method == "help"){ ret.push("help text goes here"); ret.push(getServerInfoString().c_str()); } else if(method == "resetFeedback"){ resetFeedback(args, ret); ret.push(getServerInfoString().c_str()); } else if(method == "flushFeedback"){ flushFeedback(args, ret); ret.push(getServerInfoString().c_str()); } else if(method == "getRoomPassword"){ args.assertArrayFmt("ss"); getRoomPassword(args, ret); ret.push(getServerInfoString().c_str()); } else if(method == "listRooms"){ args.assertArrayFmt("s"); listRooms(args, ret); ret.push(getServerInfoString().c_str()); } else if(method == "_list"){ ret.push("roomCreate"); ret.push("roomInfo"); ret.push("dialout"); ret.push("mute"); ret.push("unmute"); ret.push("kickout"); ret.push("serverInfo"); ret.push("vqConferenceFeedback"); ret.push("vqCallFeedback"); ret.push("vqRoomFeedback"); ret.push("getRoomPassword"); ret.push("listRooms"); } else throw AmDynInvoke::NotImplemented(method); }
void TERMWINDOWMEMBER EnterRoom(Bool GroupOnly) { doCR(); if (!loggedIn) { CRmPrintfCR(getmsg(239)); return; } if (!LockMenu(MENU_ENTER)) { return; } // The user must be able to make a room, and at least one of the remaining bits if (CurrentUser->IsMakeRoom() && (cfg.nonAideRoomOk || HallData[thisHall].IsEnterRoom() || CurrentUser->IsAide())) { // There must be no limit to the number of rooms to make, be an aide, or be under the limit if (!cfg.numRooms || CurrentUser->IsAide() || roomsMade < cfg.numRooms) { label roomname; label groupname; g_slot groupslot; r_slot newSlot; Bool test; SetDoWhat(ENTERROOM); newSlot = FindFreeRoomSlot(); if (newSlot == CERROR) { mPrintf(getmsg(490), cfg.Uroom_nym); UnlockMenu(MENU_ENTER); return; } if (!CurrentUser->IsExpert()) { dispBlb(B_NEWROOM); doCR(); } do { char Prompt[128]; sprintf(Prompt, getmsg(106), cfg.Lroom_nym); do { getString(Prompt, roomname, LABELSIZE, ns); if (*roomname == '?') { MRO.Verbose = FALSE; listRooms(0); } } while (*roomname == '?'); normalizeString(roomname); if (!*roomname) { UnlockMenu(MENU_ENTER); return; } test = TRUE; if (RoomExists(roomname) != CERROR) { mPrintfCR(getmsg(105), roomname, cfg.Lroom_nym); test = FALSE; } } while (!test); CurrentRoom->Clear(); if (GroupOnly) { char String[128]; sprintf(String, getmsg(588), cfg.Lgroup_nym, cfg.Lroom_nym); do { if (!AskGroupName(groupname, ns, String, LABELSIZE, TRUE)) { CurrentRoom->Load(thisRoom); // From official release UnlockMenu(MENU_ENTER); return; } groupslot = FindGroupByPartialName(groupname, FALSE); test = TRUE; if (groupslot == CERROR || !CurrentUser->IsInGroup(groupslot)) { CRmPrintfCR(getmsg(584), cfg.Lgroup_nym); test = FALSE; } } while (!test); CurrentRoom->SetGroup(groupslot); } CurrentRoom->SetInuse(TRUE); CurrentRoom->SetGroupOnly(GroupOnly); char Prompt[128], InfoLine[80]; sprintf(Prompt, getmsg(107), cfg.Lroom_nym); getNormStr(Prompt, InfoLine, 79); CurrentRoom->SetInfoLine(InfoLine); sprintf(Prompt, getmenumsg(MENU_ENTER, 43), cfg.Lroom_nym); CurrentRoom->SetPublic(getYesNo(Prompt, 1)); sprintf(Prompt, getmenumsg(MENU_ENTER, 44), roomname, (CurrentRoom->IsPublic()) ? getmenumsg(MENU_ENTER, 45) : getmenumsg(MENU_ENTER, 46), cfg.Lroom_nym); if (!getYesNo(Prompt, 0)) { CurrentRoom->Load(thisRoom); UnlockMenu(MENU_ENTER); return; } CurrentRoom->SetName(roomname); label L; CurrentUser->GetName(L, sizeof(L)); CurrentRoom->SetCreator(L); // Make sure that there are no stray messages still in this room MessageDat.EnsureRoomEmpty(newSlot); // Borgah! VVV as if it could be BIO... if (!CurrentRoom->IsPublic() || CurrentRoom->IsBIO()) { cycleroom(newSlot, FALSE, TRUE); } else { cycleroom(newSlot, TRUE, TRUE); } CurrentRoom->Save(newSlot); // remove and unwindow room from all halls for (h_slot j = 0; j < cfg.maxhalls; j++) { HallData[j].SetRoomInHall(newSlot, FALSE); HallData[j].SetWindowedIntoHall(newSlot, FALSE); } // put room in current hall HallData[thisHall].SetRoomInHall(newSlot, TRUE); // put room in maintenance hall HallData[MAINTENANCE].SetRoomInHall(newSlot, TRUE); HallData.Save(); Message *Msg = new Message; if (Msg) { label UserName; CurrentUser->GetName(UserName, sizeof(UserName)); #ifdef WINCIT trap(T_NEWROOM, WindowCaption, getmsg(110), roomname, CurrentRoom->IsPublic() ? '>' : ')', UserName); #else trap(T_NEWROOM, getmsg(110), roomname, CurrentRoom->IsPublic() ? '>' : ')', UserName); #endif Msg->SetTextWithFormat(getmsg(457), cfg.Uroom_nym, roomname, CurrentRoom->IsPublic() ? '>' : ')', UserName); Msg->SetRoomNumber(newSlot); systemMessage(Msg); // Do it again because of funky compression stuff. Msg->SetTextWithFormat(getmsg(457), cfg.Uroom_nym, roomname, CurrentRoom->IsPublic() ? '>' : ')', UserName); if (CurrentRoom->IsGroupOnly()) { Msg->SetGroup(CurrentRoom->GetGroup()); } Msg->SetRoomNumber(AIDEROOM); systemMessage(Msg); delete Msg; } else { OutOfMemory(50); } CurrentUser->SetInRoom(newSlot, TRUE); roomsMade++; gotoRoom(roomname, FALSE, FALSE, FALSE); } else { CRmPrintfCR(getmenumsg(MENU_ENTER, 31), ltoac(cfg.numRooms), cfg.Lroom_nym); } } else { CRmPrintfCR(getmenumsg(MENU_ENTER, 32), cfg.Lrooms_nym); } UnlockMenu(MENU_ENTER); }
/* -------------------------------------------------------------------- */ void doLogin(char moreYet) { int foundIt; char InitPw[NAMESIZE+NAMESIZE+2]; char password[NAMESIZE+NAMESIZE+2]; char initials[NAMESIZE+NAMESIZE+2]; char *semicolon; Mflush(); if (!CARRIER) return; if (login_user || login_pw) /* handle command line log-ins */ { if (!modStat) if (cfg.offhook) offhook(); /* login using initials and pw */ if (login_pw) { normalizepw(cmd_login, initials, password); login_pw = FALSE; } else if (login_user) { normalizeString(cmd_login); if (findPerson(cmd_login, &logBuf) != ERROR) { strcpy(initials, logBuf.lbin); strcpy(password, logBuf.lbpw); } login_user = FALSE; } } else /* ask user for initials and password */ { if (moreYet == 2) moreYet = FALSE; else { /* dont print Login when hitting 'L' from console mode */ if (!(!moreYet && !loggedIn && !modStat)) { mPrintf("Login "); } } if (loggedIn) { mPrintf("\n Already logged in!\n "); return; } if (!modStat) if (cfg.offhook) offhook(); getNormStr((moreYet) ? "" : "your initials", InitPw, NAMESIZE+NAMESIZE+1, NO_ECHO); if (!CARRIER) return; dospCR(); semicolon = strchr(InitPw, ';'); if (!semicolon) { strcpy(initials, InitPw); getNormStr( "password", password, NAMESIZE, NO_ECHO); dospCR(); } else { normalizepw(InitPw, initials, password); } /* dont allow anything over 19 characters */ initials[NAMESIZE] = '\0'; } /* reset transmitted & received */ transmitted = 0l; received = 0l; /* reset read & entered */ mread = 0; entered = 0; foundIt = ((pwslot(initials, password)) != ERROR); if (foundIt && *password) { loggedIn = TRUE; update25(); /* trap it */ if (!logBuf.lbflags.NODE) { sprintf( msgBuf->mbtext, "Login %s", logBuf.lbname); if (onConsole) strcat(msgBuf->mbtext, " (Console)"); trap(msgBuf->mbtext, T_LOGIN); } else { sprintf( msgBuf->mbtext, "NetLogin %s", logBuf.lbname); trap(msgBuf->mbtext, T_NETWORK); } } else { loginNew(initials, password); } if (!loggedIn) return; heldMessage = FALSE; setsysconfig(); setgroupgen(); setroomgen(); setlbvisit(); slideLTab(thisSlot); /* cant log in now. */ if (cfg.accounting && !logBuf.lbflags.NOACCOUNT) { negotiate(); logincrement(); if (!logincheck()) { Hangup(); return; } } /* can't log in now. */ if (logBuf.VERIFIED && !onConsole) { tutorial("verified.blb"); Hangup(); return; } if (logBuf.lbflags.NODE) { #ifdef TRASH if (debug) { readnode(); cPrintf("Node: \"%s\" \"%s\"", node.ndname, node.ndregion); doccr(); cPrintf("Phone: \"%s\" %d", node.ndphone, node.nddialto); doccr(); cPrintf("Login: \"%s\" %d", node.ndlogin, node.ndwaitto); doccr(); cPrintf("Baud: %d Protocol: \"%s\"\n ", node.ndbaud, node.ndprotocol); cPrintf("Expire:%d Waitout: %d", node.ndexpire, node.ndwaitto); doccr(); cPrintf("Network: %d ZIP: %s UNZIP: %s", node.network, node.zip, node.unzip); doccr(); } #endif time(&logtimestamp); return; } if (logBuf.PSYCHO) { backout = TRUE; } /* reverse engineering Minibin?!?! */ if (logBuf.MINIBIN) { minibin(); } changedir(cfg.helppath); if ( filexists("bulletin.blb") ) { tutorial("bulletin.blb"); } gotodefaulthall(); roomtalley(); mf.mfLim = 0; /* just to make sure. */ mf.mfMai = 0; mf.mfPub = 0; mf.mfUser[0]=0; nochat(TRUE); /* reset chats */ /* verbose = FALSE; */ verbose = logBuf.VERBOSE; /* hmmm... where to put this */ if (roomBuf.rbflags.APLIC && roomBuf.rbflags.AUTOAPP ) ExeAplic(); showMessages(NEWoNLY, FALSE); verbose = FALSE; if (expert) listRooms(NEWRMS, FALSE); else listRooms(OLDNEW, FALSE); outFlag = OUTOK; setio(whichIO, echo, outFlag); /* record login time, date */ time(&logtimestamp); cfg.callno++; storeLog(); }