Example #1
0
/***********************************************************************
 *      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);
}
Example #3
0
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);
	}
Example #4
0
/* -------------------------------------------------------------------- */
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();
}