示例#1
0
/* -------------------------------------------------------------------- */
xhallfunc(int roomslot, int xyn, int fl)
{
    int yn;

    if (hallBuf->hall[thisHall].hroomflags[roomslot].inhall)
    {

        yn=getYesNo("Exclude from hall", (char)xyn);
        if (yn == 2) return FALSE;
        if (yn)
        {
            hallBuf->hall[thisHall].hroomflags[roomslot].inhall = FALSE;

            sprintf(msgBuf->mbtext,
            "Room %s excluded from hall %s by %s",
             roomTab[roomslot].rtname,
             hallBuf->hall[thisHall].hallname,
             logBuf.lbname );

            trap(msgBuf->mbtext, T_AIDE);

            if (!fl)
            {
                aideMessage();
            }else{              
                amPrintf(" Excluded %s\n",
                       roomTab[roomslot].rtname,
                       hallBuf->hall[thisHall].hallname);
                changed_room = TRUE;
            }
        }
    }else{
      yn=getYesNo("Add to hall", (char)xyn);
      if (yn == 2) return FALSE;
      if (yn)
      {
          hallBuf->hall[thisHall].hroomflags[roomslot].inhall = TRUE;

          sprintf(msgBuf->mbtext,
             "Room %s added to hall %s by %s",
             roomTab[roomslot].rtname,
             hallBuf->hall[thisHall].hallname,
             logBuf.lbname );

          trap(msgBuf->mbtext, T_AIDE);

            if (!fl)
            {
                aideMessage();
            }else{
                amPrintf(" Added    %s\n",
                       roomTab[roomslot].rtname);
                changed_room = TRUE;
            }
      }
    }
    return TRUE;
}
示例#2
0
/* -------------------------------------------------------------------- */
int changedir(char *path)
{

	flipFileLan(path,1);

    /* change disk */
    changedisk(path[0]);

    /* change path */
    if (chdir(path) == -1) {
        mPrintf("\n Directory path invalid.");
		cPrintf("\n Invalid directory '%s' on drive '%c:'.\n", path, path[0]);
		amPrintf("\n Invalid directory '%s' on drive '%c:'.\n", path, path[0]);
        SaveAideMess();
		flipFileLan(path,0);
		return -1;
    }
	flipFileLan(path,0);
    return TRUE;
}
示例#3
0
void globalhall(void)
{
    int roomslot;

    changed_room = FALSE;

    for (roomslot = 0; roomslot < MAXROOMS; roomslot++)
      if (roomTab[roomslot].rtflags.INUSE)
      {
        mPrintf(" %s", roomTab[roomslot].rtname);
        if (xhallfunc(roomslot, 3, TRUE)==FALSE)
          break;
      }

    if (changed_room)
    {
        amPrintf("\n By %s, in hall %s\n", logBuf.lbname,
                hallBuf->hall[thisHall].hallname);

        SaveAideMess();
    }

    putHall();
}       
示例#4
0
/* -------------------------------------------------------------------- */
void globaluser(void)
{
    label               who;
    int groupslot, yn, logNo;

    getNormStr("who", who, NAMESIZE, ECHO);
    logNo   = findPerson(who, &lBuf);
    if (logNo == ERROR || !strlen(who) )  
    {
        mPrintf("No \'%s\' known. \n ", who);
        return;
    }

    for(groupslot=0; groupslot < MAXGROUPS; groupslot++)
    {
      if (grpBuf.group[groupslot].g_inuse 
          && ( !grpBuf.group[groupslot].lockout || sysop )
          && ( !grpBuf.group[groupslot].hidden  || ingroup(groupslot) )
         )
      {
        mPrintf(" %s", grpBuf.group[groupslot].groupname);
        if (lBuf.groups[groupslot] == grpBuf.group[groupslot].groupgen)
        {
            if ((yn = getYesNo("Remove from group", 3)) != 0 /*NULL*/)
            {
                if (yn == 2)
                {
                    SaveAideMess();
                    return;
                }

                lBuf.groups[groupslot] =
                  (uchar)((grpBuf.group[groupslot].groupgen
                  + (MAXGROUPGEN - 1)) % MAXGROUPGEN);
                sprintf(msgBuf->mbtext,
                  "%s kicked out of group %s by %s",
                  lBuf.lbname,
                grpBuf.group[groupslot].groupname,
                  logBuf.lbname );

                trap(msgBuf->mbtext, T_AIDE);

              amPrintf(" %s\n", msgBuf->mbtext);
            }
        }
        else
        {
          if ((yn = getYesNo("Add to group", 3)) != /* NULL */ 0)
          {
            if (yn == 2)
                {
                    SaveAideMess();
                    return;
                }

            lBuf.groups[groupslot] = grpBuf.group[groupslot].groupgen;

            sprintf(msgBuf->mbtext,
              "%s added to group %s by %s",
              lBuf.lbname,
              grpBuf.group[groupslot].groupname,
              logBuf.lbname );
            trap(msgBuf->mbtext, T_SYSOP);

              amPrintf(" %s\n",msgBuf->mbtext);
          }
        }
        putLog(&lBuf, logNo);

        /* see if it is us: */
        if (loggedIn  &&  strcmpi(logBuf.lbname, who) == SAMESTRING) 
        {
            logBuf.groups[groupslot] = lBuf.groups[groupslot];
        }
      }
    }

    SaveAideMess();
}
示例#5
0
/* -------------------------------------------------------------------- */
void globalgroup(void)
{
    label groupname;
    int groupslot, i, yn, add, logNo;

    mPrintf("(A/R/[B]): ");

    switch (toupper( iCharNE() ))
    {
    case 'A':
        mPrintf("Add\n ");
        add = 1;
        break;
    
    case 'R':
        mPrintf("Remove\n ");
        add = 2;
        break;
    
    case '?':
        tutorial("grpglob.mnu");
        return;
        
    case 'B':
    case 10:
    case 13:
    default:
        mPrintf("Both\n ");
        add = 0;
        break;
    }

    getString("group", groupname, NAMESIZE, FALSE, ECHO, "");

    groupslot = partialgroup(groupname);

    if ( grpBuf.group[groupslot].hidden && !ingroup(groupslot) )
        groupslot = ERROR;

    if ( groupslot == ERROR || !strlen(groupname) )
    {
        mPrintf("\n No such group.");
        return;
    }

    if ( grpBuf.group[groupslot].lockout && !sysop )
    {
        mPrintf("\n Group is locked.");
        return;
    }

    for (i = 0; i < cfg.MAXLOGTAB; i++)
    {
        if (logTab[i].ltpwhash != 0 && logTab[i].ltnmhash !=0)
        {
            logNo=logTab[i].ltlogSlot;
            getLog(&lBuf, logNo);
            
            /* Get out.. */
            outFlag = OUTOK;
            if (mAbort(FALSE)) break;
            outFlag = IMPERVIOUS;
            
            if (lBuf.groups[groupslot] == grpBuf.group[groupslot].groupgen)
            {
                if(add == 2 || add == 0)
                {
                    mPrintf(" 3%s0", lBuf.lbname);
                    yn=getYesNo("Remove from group", 0+3);
                    if (yn == 2)
                    {
                        SaveAideMess();
                        return;
                    }
      
                    if (yn)
                    {
                        lBuf.groups[groupslot] =
                            (uchar)((grpBuf.group[groupslot].groupgen
                          + (MAXGROUPGEN - 1)) % MAXGROUPGEN);
          
                        sprintf(msgBuf->mbtext,
                            "%s kicked out of group %s by %s",
                            lBuf.lbname,
                            grpBuf.group[groupslot].groupname,
                            logBuf.lbname );
           
                        trap(msgBuf->mbtext, T_SYSOP);
          
                        amPrintf(" %s\n", msgBuf->mbtext);
                    }
                }
            }
            else
            {
                if (add == 0 || add == 1)
                {
                    mPrintf(" 3%s0", lBuf.lbname);
                    yn=getYesNo("Add to group", 0+3);
                    if (yn == 2)
                    {
                        SaveAideMess();
                        return;
                    }
                    if (yn)
                    {
                        lBuf.groups[groupslot] =
                            grpBuf.group[groupslot].groupgen;
           
                        sprintf(msgBuf->mbtext,
                            "%s added to group %s by %s",
                            lBuf.lbname,
                            grpBuf.group[groupslot].groupname,
                            logBuf.lbname );
         
                        trap(msgBuf->mbtext, T_AIDE);
           
                        amPrintf(" %s\n",msgBuf->mbtext);
                    }
                }
            }
  
            putLog(&lBuf, logNo);
     
            /* see if it is us: */
            if (loggedIn  &&  strcmpi(logBuf.lbname, lBuf.lbname) == SAMESTRING)
            {
                logBuf.groups[groupslot] = lBuf.groups[groupslot];
            }
        }
    }

    SaveAideMess();
}
示例#6
0
/* -------------------------------------------------------------------- */
static void makeSendFile(void)
{
    char line[100], line2[100];
    label troo;
    label fn;
    FILE *file;
    int i = 0, rm;
    
    if ((file = fopen(roomreqin, "rb")) == NULL)
    {
        perror("Error opening roomreq.in");
    }

    doccr();
    cPrintf(" Fetching:");
    doccr();

    GetStr(file, troo, LABELSIZE);
    
    while(strlen(troo) && !feof(file))
    {
        if ((rm = roomExists(troo)) != ERROR)
        {
	    if (nodecanseeroom(node.ndname, rm))
            {
                sprintf(fn, "room.%d", i);
                cPrintf(" %-20s  ", troo);
                if( !((i+1) % 3) ) doccr();
                NewRoom(rm, fn);
            }
            else
            {
                doccr();
                cPrintf(" No access to %s room.", troo);
                doccr();
                amPrintf(" '%s' room not available to remote.\n", troo);
                netError = TRUE;
            }
        }
        else
        {
            doccr();
            cPrintf(" No %s room on system.", troo);
            doccr();
            amPrintf(" '%s' room not found for remote.\n", troo);
            netError = TRUE;
        }

        i++;
        GetStr(file, troo, LABELSIZE);
    }
    doccr();
    fclose(file);
    unlink(roomreqin);

    cPrintf(" Copying mail file.");
    doccr();
    sprintf(line,  "%s\\%s",         cfg.transpath, node.ndmailtmp);
    sprintf(line2, "%s\\mesg.tmp",   cfg.temppath);
    if ((file = fopen(line2, "wb")) != NULL)
    {
        fclose(file);
    }
    copyfile(line, line2);
    
    cPrintf(" Compressing message files.");
    doccr();
    
    /* 
     * Zip them up
     */
    sformat(line, node.zip, "df", roomdataout, "mesg.tmp room.*");
    apsystem(line);
    
    /* 
     * Remove them.
     */
    ambigUnlink("room.*",   FALSE);
    unlink("mesg.tmp");
}
示例#7
0
void TERMWINDOWMEMBER makeSendFile(void)
	{
	char line[100], line2[100];
	label troo;
	label fn;
	FILE *file;
	int i = 0;
	int crcounter = 0;

	if ((file = fopen(roomreqIn, FO_RB)) == NULL)
		{
		perror(getnetmsg(90));
		return; // ok
		}

	doccr();
	cPrintf(getnetmsg(2));
	doccr();

	GetStr(file, troo, LABELSIZE);

	while (*troo && !feof(file))
		{
		r_slot rm = RoomExists(troo);

		if (rm == CERROR)
			{
			rm = IdExists(troo, TRUE);
			}

		if (rm != CERROR)
			{
			if (CurrentUser->CanAccessRoom(rm))
				{
				sprintf(fn, getnetmsg(126), i);
				cPrintf(getnetmsg(128), deansi(troo));
				if (!((crcounter+1) % 3))
					{
					doccr();
					}
				crcounter++;
				NewRoom(rm, fn, NULL);
				}
			else
				{
				doccr();
				cPrintf(getnetmsg(111), deansi(troo));
				doccr();
				amPrintf(getnetmsg(4), troo, bn);
				netError = TRUE;
				}
			}
		else
			{
			doccr();
			cPrintf(getnetmsg(97), deansi(troo));
			doccr();
			amPrintf(getnetmsg(6), troo, bn);
			netError = TRUE;
			}

		i++;
		GetStr(file, troo, LABELSIZE);
		}

	doccr();
	fclose(file);
	unlink(roomreqIn);

	cPrintf(getnetmsg(98));
	doccr();
	sprintf(line, sbs, cfg.transpath, node->GetMailFileName());
	sprintf(line2, sbs, LocalTempPath, mesgTmp);
	if ((file = fopen(line2, FO_WB)) != NULL)
		{
		fclose(file);
		}
	copyfile(line, line2);

	cPrintf(getnetmsg(99), cfg.Lmsg_nym);
	doccr();

	// Zip them up
	sprintf(line2, getnetmsg(113), mesgTmp, roomStar);
	sformat(line, node->GetCreatePacket(), getmsg(49), roomdataOut, line2, 0);
	apsystem(line, TRUE);

	// Remove them.
	changedir(LocalTempPath);
	ambigUnlink(roomStar);
	unlink(mesgTmp);
	}
示例#8
0
Bool TERMWINDOWMEMBER Net1Slave(void)
	{
	char line[100];
	label troo;
	label fn;
	FILE *file;
	int i = 0;

	const protocols *theProt = GetProtocolByKey(node->GetProtocol(), TRUE);

	if (!theProt)
		{
		doccr();
		cPrintf(getnetmsg(177));
		doCR();
		return (FALSE);
		}

	cPrintf(getnetmsg(178));
	doccr();

	sprintf(line, sbs, cfg.transpath, node->GetMailFileName());

	// create empty mail file if there is none
	if ((file = fopen(line, FO_AB)) != NULL)
		{
		fclose(file);
		}

	wxsnd(LocalTempPath, line, theProt, 0);

	if (!CommPort->HaveConnection())
		{
		return (FALSE);
		}

	cPrintf(getnetmsg(179));
	doccr();

	sprintf(line, sbs, LocalTempPath, roomreqTmp);
	unlink(line);

	wxrcv(LocalTempPath, roomreqTmp, theProt);
	changedir(LocalTempPath);

	if (!CommPort->HaveConnection())
		{
		return (FALSE);
		}

	sprintf(line, sbs, LocalTempPath, roomreqTmp);
	if ((file = fopen(line, FO_RB)) == NULL)
		{
		perror(getnetmsg(1));
		return (FALSE);
		}

	doccr();
	cPrintf(getnetmsg(2));
	doccr();

	GetStr(file, troo, LABELSIZE);

	while (*troo && !feof(file))
		{
		KBReady();

		r_slot rm;

		if ((rm = RoomExists(troo)) != CERROR)
			{
			if (CurrentUser->CanAccessRoom(rm))
				{
				sprintf(fn, getnetmsg(126), i);
				cPrintf(getnetmsg(166), deansi(troo));
				if (!((i+1) % 3))
					{
					doccr();
					}

				NewRoom(rm, fn, NULL);
				}
			else
				{
				doccr();
				cPrintf(getnetmsg(111), deansi(troo));
				doccr();
				amPrintf(getnetmsg(4), troo, bn);
				netError = TRUE;
				}
			}
		else
			{
			doccr();
			cPrintf(getnetmsg(5), deansi(troo));
			doccr();
			amPrintf(getnetmsg(167), troo, bn);
			netError = TRUE;
			}

		i++;
		GetStr(file, troo, LABELSIZE);
		}

	doccr();
	fclose(file);
	unlink(line);

	cPrintf(getnetmsg(7), cfg.Lmsg_nym);
	doccr();

	if (!CommPort->HaveConnection())
		{
		return (FALSE);
		}

	wxsnd(LocalTempPath, getnetmsg(162), theProt, 0);

	ambigUnlink(getnetmsg(162));

	return (TRUE);
	}
示例#9
0
void TERMWINDOWMEMBER Net1Cleanup(void)
	{
	int t, i;
	label fn, here, there;
	char line[100];

	CITWINDOW *w = ScreenSaver.IsOn() ? NULL : CitWindowsMsg(NULL, getmsg(82));

	Hangup();

	if (w)
		{
		destroyCitWindow(w, FALSE);
		}

	if (cfg.offhook == 1)
		{
		offhook();
		}

	sprintf(line, sbs, cfg.transpath, node->GetMailFileName());
	unlink(line);

	OC.SetOutFlag(IMPERVIOUS);

	doccr();
	cPrintf(getnetmsg(22));
	doccr();
	cPrintf(getnetmsg(23));
	doccr();
	cPrintf(getnetmsg(24));
	doccr();

	int Rooms = 0, TotalNew = 0, TotalExpired = 0, TotalDuplicate = 0;
	int ThisNew, ThisExpired, ThisDuplicate, ThisError;

	for (t = get_first_room(here, there), i = 0; t; t = get_next_room(here, there), i++)
		{
		sprintf(fn, getnetmsg(127), i);

		KBReady();

		const r_slot rm = RoomExists(here);
		if (rm != CERROR && CurrentUser->CanAccessRoom(rm))
			{
			cPrintf(getnetmsg(166), deansi(here));

			if (ReadMsgFl(rm, fn, NULL, &ThisNew, &ThisExpired, &ThisDuplicate, &ThisError, CurrentUser))
				{
				if (ThisNew)
					{
					OC.ansiattr = cfg.cattr;
					}
				cPrintf(getnetmsg(133), ThisNew);
				OC.ansiattr = cfg.attr;
				cPrintf(getnetmsg(134));

				if (ThisExpired)
					{
					OC.ansiattr = cfg.cattr;
					}

				cPrintf(getnetmsg(133), ThisExpired);
				OC.ansiattr = cfg.attr;
				cPrintf(getnetmsg(134));

				if (ThisDuplicate)
					{
					OC.ansiattr = cfg.cattr;
					}
				cPrintf(getnetmsg(133), ThisDuplicate);
				OC.ansiattr = cfg.attr;

				TotalNew += ThisNew;
				TotalExpired += ThisExpired;
				TotalDuplicate += ThisDuplicate;
				Rooms++;
				}
			else
				{
				amPrintf(getnetmsg(28), there, bn);
				netError = TRUE;
				cPrintf(getnetmsg(29));
				}

			doccr();
			}
		else
			{
			cPrintf(getnetmsg(30), deansi(here));
			amPrintf(getnetmsg(31), here, bn);
			netError = TRUE;
			doccr();
			}

		unlink(fn);
		}

	cPrintf(getnetmsg(24));
	doccr();
	cPrintf(getnetmsg(32));

	if (Rooms)
		{
		OC.ansiattr = cfg.cattr;
		}
	cPrintf(getnetmsg(133), Rooms);
	OC.ansiattr = cfg.attr;

	cPrintf(getnetmsg(134));
	if (TotalNew)
		{
		OC.ansiattr = cfg.cattr;
		}
	cPrintf(getnetmsg(133), TotalNew);
	OC.ansiattr = cfg.attr;

	cPrintf(getnetmsg(134));
	if (TotalExpired)
		{
		OC.ansiattr = cfg.cattr;
		}
	cPrintf(getnetmsg(133), TotalExpired);
	OC.ansiattr = cfg.attr;

	cPrintf(getnetmsg(134));
	if (TotalDuplicate)
		{
		OC.ansiattr = cfg.cattr;
		}
	cPrintf(getnetmsg(133), dup);
	OC.ansiattr = cfg.attr;

	doccr();
	cPrintf(getnetmsg(33));
	doccr();
	doccr();
	cPrintf(getnetmsg(34));
	doccr();

	ReadMsgFl(MAILROOM, getnetmsg(164), NULL, &ThisNew, &ThisExpired, &ThisDuplicate, &ThisError, NULL);

	label New, Routed, Rejected;
	CopyStringToBuffer(New, ltoac(i == CERROR ? 0 : i));
	CopyStringToBuffer(Routed, ltoac(ThisExpired));
	CopyStringToBuffer(Rejected, ltoac(ThisDuplicate));

	cPrintf(getnetmsg(35), New, ThisNew == 1 ? cfg.Lmsg_nym : cfg.Lmsgs_nym, Routed, Rejected,
			ltoac(ThisNew + ThisExpired + ThisDuplicate));

	doccr();

	changedir(LocalTempPath);
	ambigUnlink(getnetmsg(162));
	ambigUnlink(getnetmsg(163));

	unlink(getnetmsg(164));

	changedir(cfg.homepath);

	MS.Expired = TotalExpired;
	MS.Duplicate = TotalDuplicate;
	MS.Entered = TotalNew + ThisNew;

	if (netError)
		{
		label Buffer;
		amPrintf(getnetmsg(36), bn, CurrentUser->GetName(Buffer, sizeof(Buffer)), bn);
		SaveAideMess(NULL);
		}

	readNetCmdTmp(CONSOLE);

	// we are no longer calling out...
	callout = FALSE;
	}
示例#10
0
void TERMWINDOWMEMBER globalverify(void)
{
    l_slot i;

    SetDoWhat(SYSNUSER);

    OC.SetOutFlag(OUTOK);

    label CUName;
    CurrentUser->GetName(CUName, sizeof(CUName));

    for (i = 0; (i < cfg.MAXLOGTAB) && (OC.User.GetOutFlag() != OUTSKIP) &&
#ifdef MULTI
            !OC.CheckInput(FALSE, this); i++)
#else
            !OC.CheckInput(FALSE);
            i++)
#endif
    {
        if (LTab(i).IsInuse())
        {
            l_index logNo = LTab(i).GetLogIndex();
            LogEntry1 Log1;

            if (Log1.Load(logNo))
            {
                label Name;
                Log1.GetName(Name, sizeof(Name));

                Bool Changed = FALSE;

                if (!Log1.IsVerified())
                {
                    int yn;

                    char Prompt[128];
                    sprintf(Prompt, getsysmsg(59), Name);

                    yn = getYesNo(Prompt, 3);

                    if (yn == 2)
                    {
                        SaveAideMess(NULL);
                        return;
                    }

                    if (yn)
                    {
                        char trapstr[128];

                        Changed = TRUE;

                        Log1.SetVerified(TRUE);

                        if (loggedIn && SameString(CUName, Name))
                        {
                            CurrentUser->SetVerified(TRUE);
                        }

                        sprintf(trapstr, getsysmsg(60), Name, CUName);

                        trap(T_SYSOP, pcts, trapstr);
                        amPrintf(getmsg(429), trapstr, bn);
                    }
                    else if (!SameString(CUName, Name))
                    {
                        if (getYesNo(getsysmsg(61), 0))
                        {
                            char trapstr[128];

                            Changed = TRUE;

                            CRmPrintfCR(getsysmsg(85), Name);

                            // trap it
                            sprintf(trapstr, getsysmsg(62), Name);
                            trap(T_SYSOP, pcts, trapstr);

                            amPrintf(getmsg(429), trapstr, bn);

                            Log1.Clear();
                        }
                    }
                }
                else if (Log1.IsProblem())
                {
                    int yn;

                    char Prompt[128];
                    sprintf(Prompt, getsysmsg(41), Name);

                    yn = getYesNo(Prompt, 3);

                    if (yn == 2)
                    {
                        SaveAideMess(NULL);
                        return;
                    }

                    if (yn)
                    {
                        char trapstr[128];

                        Changed = TRUE;

                        Log1.SetProblem(FALSE);

                        if (loggedIn && SameString(CUName, Name))
                        {
                            CurrentUser->SetProblem(FALSE);
                        }

                        sprintf(trapstr, getsysmsg(42), Name, CUName);

                        trap(T_SYSOP, pcts, trapstr);
                        amPrintf(getmsg(429), trapstr, bn);
                    }
                    else if (!SameString(CUName, Name))
                    {
                        if (getYesNo(getsysmsg(61), 0))
                        {
                            char trapstr[128];

                            Changed = TRUE;

                            CRmPrintfCR(getsysmsg(85), Name);

                            // trap it
                            sprintf(trapstr, getsysmsg(51), Name);
                            trap(T_SYSOP, pcts, trapstr);

                            amPrintf(getmsg(429), trapstr, bn);

                            Log1.Clear();
                        }
                    }
                }

                if (Changed)
                {
                    Log1.Save(logNo);
                }
            }
        }
    }

    SaveAideMess(NULL);
}