773 lines
30 KiB
Plaintext
773 lines
30 KiB
Plaintext
|
{$IFDEF WIN32}
|
||
|
{$I DEFINES.INC}
|
||
|
{$ENDIF}
|
||
|
|
||
|
{$A+,B-,D+,E-,F+,I-,L+,N-,O+,R-,S+,V-}
|
||
|
UNIT Doors;
|
||
|
|
||
|
INTERFACE
|
||
|
|
||
|
USES
|
||
|
Common;
|
||
|
|
||
|
PROCEDURE DoDoorFunc(DropFileType: Char; MenuOption: Str50);
|
||
|
|
||
|
IMPLEMENTATION
|
||
|
|
||
|
USES
|
||
|
ExecBat,
|
||
|
Events,
|
||
|
File0,
|
||
|
Mail0,
|
||
|
SysOp12,
|
||
|
TimeFunc;
|
||
|
|
||
|
PROCEDURE ShowUserName(RName: Boolean; VAR First,Last: AStr);
|
||
|
BEGIN
|
||
|
First := '';
|
||
|
Last := '';
|
||
|
IF (RName) THEN
|
||
|
BEGIN
|
||
|
IF (Pos(' ',ThisUser.RealName) = 0) THEN
|
||
|
BEGIN
|
||
|
First := ThisUser.RealName;
|
||
|
Last := '';
|
||
|
END
|
||
|
ELSE
|
||
|
BEGIN
|
||
|
First := Copy(ThisUser.RealName,1,(Pos(' ',ThisUser.RealName) - 1));
|
||
|
Last := Copy(ThisUser.RealName,(Length(First) + 2),Length(ThisUser.RealName));
|
||
|
END;
|
||
|
END
|
||
|
ELSE
|
||
|
BEGIN
|
||
|
IF (Pos(' ',ThisUser.Name) = 0) THEN
|
||
|
BEGIN
|
||
|
First := ThisUser.Name;
|
||
|
Last := '';
|
||
|
END
|
||
|
ELSE
|
||
|
BEGIN
|
||
|
First := Copy(ThisUser.Name,1,(Pos(' ',ThisUser.Name) - 1));
|
||
|
Last := Copy(ThisUser.Name,(Length(First) + 2),Length(ThisUser.Name));
|
||
|
END;
|
||
|
END;
|
||
|
END;
|
||
|
|
||
|
(*
|
||
|
START POS SAVED
|
||
|
& LENGTH AS DESCRIPTION OF DATA
|
||
|
--------- ------ --------------------------------------------
|
||
|
1, 2 ASCII "-1" always used by FeatherNet PRO!
|
||
|
3, 2 ASCII " 0" always used By FeatherNet PRO!
|
||
|
5, 2 ASCII "-1" if page allowed or 0 if not.
|
||
|
7, 2 ASCII User Number in Users file
|
||
|
9, 1 ASCII "Y" if Expert or "N"if Not
|
||
|
10, 2 ASCII "-1" if Error Correcting modem, "0" if not
|
||
|
12, 1 ASCII "Y" if Graphics Mode or "N" if Not
|
||
|
13, 1 ASCII "A" is always placed here by FeatherNet PRO!
|
||
|
14, 5 ASCII The DTE speed or PC to Modem baud rate
|
||
|
19, 5 ASCII The connect baud rate:"300-38400" or "Local"
|
||
|
24, 2 MKI$ User's Record # in "USERS" file
|
||
|
26, 15 ASCII User's FIRST Name padded with spaces
|
||
|
41, 12 ASCII User's Password
|
||
|
53, 2 MKI$ Time user logged on in Mins: (60 x Hr)+Mins
|
||
|
55, 2 MKI$ User's Time on today in minutes
|
||
|
57, 5 ASCII Time user logged on in HH:MM format. Ex: "12:30"
|
||
|
62, 2 MKI$ Time user allowed today in minutes
|
||
|
64, 2 ASCII Daily D/L Limit from pwrd file
|
||
|
66, 1 Chr$ Conference the user has last joined
|
||
|
67, 5 Bitmap Areas user has been in
|
||
|
72, 5 Bitmap Areas user has scanned
|
||
|
77, 2 MKI$i An mki$(0) used by FeatherNet PRO!
|
||
|
79, 2 MKI$ Currently a value of 0 is here (MKI$(0))
|
||
|
81, 4 ASCII 4 Spaces are placed here
|
||
|
85, 25 ASCII User's Full name placed here.
|
||
|
110, 2 MKI$ Number of minutes user has left today
|
||
|
112, 1 chr$ Node user is on (actual character)
|
||
|
113, 5 ASCII Scheduled EVENT time
|
||
|
118, 2 ASCII A "-1" if EVENT is active or a " 0"
|
||
|
120, 2 ASCII " 0" is Placed here by FeatherNet PRO!
|
||
|
122, 4 MKS$ Time of day in secs format when user is on
|
||
|
126, 1 ASCII The Com port this node uses (0 - 8)
|
||
|
127, 2 ASCII Flag to let FNET PRO! know type of file xfer
|
||
|
129, 1 CHAR Ansi Detected Flag - Char[0] or Char[1]
|
||
|
130, 13 ASCII Unused by FeatherNet PRO! - SPACE filled
|
||
|
143, 2 MKI$ Last Area User was in (0 - 32766 possible)
|
||
|
145 BITMAP Not Currently Used by FeatherNet PRO!
|
||
|
|
||
|
--------------------------------------------------------------------------------
|
||
|
Some BASIC functions:
|
||
|
CHR$
|
||
|
Writes a character (8 bit value). One byte.
|
||
|
MKI$
|
||
|
Writes a short integer (16 bit value). Low byte then high byte.
|
||
|
MKS$
|
||
|
I didn't want to research this, and am writing four zeroes. Anyone know?
|
||
|
--------------------------------------------------------------------------------
|
||
|
*)
|
||
|
|
||
|
PROCEDURE Write_PCBoard_Sys(RName: Boolean);
|
||
|
VAR
|
||
|
DoorFile: FILE;
|
||
|
S,
|
||
|
UN: STRING[50];
|
||
|
i: Integer;
|
||
|
|
||
|
PROCEDURE Dump(x: STRING);
|
||
|
BEGIN
|
||
|
BlockWrite(DoorFile,x[1],Length(x));
|
||
|
END;
|
||
|
|
||
|
BEGIN
|
||
|
UN := AOnOff(RName,ThisUser.RealName,ThisUser.Name);
|
||
|
|
||
|
Assign(DoorFile,Liner.DoorPath+'PCBOARD.SYS');
|
||
|
ReWrite(DoorFile,1);
|
||
|
Dump(AOnOff(WantOut,'-1',' 0'));
|
||
|
Dump(AOnOff(FALSE,'-1',' 0'));
|
||
|
Dump(AOnOff(SysOpAvailable,'-1',' 0'));
|
||
|
Dump(' 0 ');
|
||
|
Dump(AOnOff(Reliable,'-1',' 0'));
|
||
|
Dump(Copy(ShowYesNo(OkANSI OR OKAvatar),1,1));
|
||
|
Dump('A');
|
||
|
Dump(PadLeftInt(ComPortSpeed,5));
|
||
|
Dump(AOnOff((ComPortSpeed = 0),'Local',PadLeftInt(ComPortSpeed,5)));
|
||
|
BlockWrite(DoorFile,UserNum,2);
|
||
|
Dump(PadLeftStr(Copy(UN,1,Pos(' ',UN) - 1),15));
|
||
|
Dump(PadLeftStr('PASSWORD',12));
|
||
|
i := 0;
|
||
|
BlockWrite(DoorFile,i,2);
|
||
|
BlockWrite(DoorFile,i,2);
|
||
|
Dump('00:00');
|
||
|
i := General.TimeAllow[ThisUser.SL];
|
||
|
BlockWrite(DoorFile,i,2);
|
||
|
i := General.DLKOneDay[ThisUser.SL];
|
||
|
BlockWrite(DoorFile,i,2);
|
||
|
Dump(#0#0#0#0#0#0);
|
||
|
Dump(Copy(S,1,5));
|
||
|
i := 0;
|
||
|
BlockWrite(DoorFile,i,2);
|
||
|
BlockWrite(DoorFile,i,2);
|
||
|
Dump(' ');
|
||
|
Dump(PadLeftStr(UN,25));
|
||
|
i := (NSL DIV 60);
|
||
|
BlockWrite(DoorFile,i,2);
|
||
|
Dump(Chr(ThisNode)+'00:00');
|
||
|
Dump(AOnOff(FALSE,'-1',' 0'));
|
||
|
Dump(AOnOff(FALSE,'-1',' 0'));
|
||
|
Dump(#0#0#0#0);
|
||
|
S := AOnOff((ComPortSpeed = 0),'0',IntToStr(Liner.Comport));
|
||
|
S := S[1]+#0#0;
|
||
|
IF (OkANSI OR OKAvatar) THEN
|
||
|
S := S + #1
|
||
|
ELSE
|
||
|
S := S + #0;
|
||
|
Dump(S);
|
||
|
Dump(DateStr);
|
||
|
i := 0;
|
||
|
BlockWrite(DoorFile,i,2);
|
||
|
Dump(#0#0#0#0#0#0#0#0#0#0);
|
||
|
Close(DoorFile);
|
||
|
LastError := IOResult;
|
||
|
END;
|
||
|
|
||
|
(*
|
||
|
Node name The name of the system.
|
||
|
Sysop f.name The sysop's name up to the first space.
|
||
|
Sysop l.name The sysop's name following the first space.
|
||
|
Com port The serial port the modem is connected to, or 0 if logged in on console.
|
||
|
Baud rate The current port (DTE) rate.
|
||
|
Networked The number "0"
|
||
|
User's first name The current user's name, up to the first space.
|
||
|
User's last name The current user's name, following the first space.
|
||
|
City Where the user lives, or a blank line if unknown.
|
||
|
Terminal type The number "0" if TTY, or "1" if ANSI.
|
||
|
Security level The number 5 for problem users, 30 for regular users, 80 for Aides, and 100 for Sysops.
|
||
|
Minutes remaining The number of minutes left in the current user's account, limited to 546 to keep from
|
||
|
overflowing other software.
|
||
|
FOSSIL The number "-1" if using an external serial driver or "0" if using internal serial routines.
|
||
|
*)
|
||
|
|
||
|
PROCEDURE Write_DorInfo1_Def(RName: Boolean);
|
||
|
VAR
|
||
|
DoorFile: Text;
|
||
|
First,
|
||
|
Last: AStr;
|
||
|
BEGIN
|
||
|
Assign(DoorFile,Liner.DoorPath+'DORINFO1.DEF');
|
||
|
ReWrite(DoorFile);
|
||
|
WriteLn(DoorFile,StripColor(General.BBSName));
|
||
|
|
||
|
First := Copy(General.SysOpName,1,(Pos(' ',General.SysOpName) - 1));
|
||
|
Last := SQOutSp(Copy(General.SysOpName,(Length(First) + 1),Length(General.SysOpName)));
|
||
|
WriteLn(DoorFile,First);
|
||
|
WriteLn(DoorFile,Last);
|
||
|
|
||
|
WriteLn(DoorFile,'COM'+AOnOff((ComPortSpeed = 0),'0',IntToStr(Liner.Comport)));
|
||
|
WriteLn(DoorFile,IntToStr(ComPortSpeed)+' BAUD,N,8,1');
|
||
|
WriteLn(DoorFile,'0');
|
||
|
|
||
|
ShowUserName(RName,First,Last);
|
||
|
|
||
|
WriteLn(DoorFile,AllCaps(First));
|
||
|
WriteLn(DoorFile,AllCaps(Last));
|
||
|
|
||
|
WriteLn(DoorFile,ThisUser.CityState);
|
||
|
WriteLn(DoorFile,AOnOff((OkANSI OR OKAvatar),'1','0'));
|
||
|
WriteLn(DoorFile,ThisUser.SL);
|
||
|
WriteLn(DoorFile,(NSL DIV 60));
|
||
|
|
||
|
WriteLn(DoorFile,'0');
|
||
|
|
||
|
Close(DoorFile);
|
||
|
LastError := IOResult;
|
||
|
END;
|
||
|
|
||
|
(*
|
||
|
0 Line 1 : Comm type (0=local, 1=serial, 2=telnet)
|
||
|
0 Line 2 : Comm or socket handle
|
||
|
38400 Line 3 : Baud rate
|
||
|
Mystic 1.07 Line 4 : BBSID (software name and version)
|
||
|
1 Line 5 : User record position (1-based)
|
||
|
James Coyle Line 6 : User's real name
|
||
|
g00r00 Line 7 : User's handle/alias
|
||
|
255 Line 8 : User's security level
|
||
|
58 Line 9 : User's time left (in minutes)
|
||
|
1 Line 10: Emulation *See Below
|
||
|
1 Line 11: Current node number
|
||
|
|
||
|
* The following are values we've predefined for the emulation:
|
||
|
|
||
|
0 = Ascii
|
||
|
1 = Ansi
|
||
|
2 = Avatar
|
||
|
3 = RIP
|
||
|
4 = Max Graphics { Not Used by RG }
|
||
|
*)
|
||
|
|
||
|
PROCEDURE Write_Door32_Sys(RName: Boolean);
|
||
|
VAR
|
||
|
DoorFile: Text;
|
||
|
|
||
|
FUNCTION ShowSpeed: AStr;
|
||
|
BEGIN
|
||
|
IF (TelNet) THEN
|
||
|
ShowSpeed := '2'
|
||
|
ELSE IF (ComportSpeed <> 0) THEN
|
||
|
ShowSpeed := '1'
|
||
|
ELSE
|
||
|
ShowSpeed := '0'
|
||
|
END;
|
||
|
|
||
|
FUNCTION ShowEmulation: AStr;
|
||
|
BEGIN
|
||
|
IF (OkRIP) THEN
|
||
|
ShowEmulation := '3'
|
||
|
ELSE IF (OKAvatar) THEN
|
||
|
ShowEmulation := '2'
|
||
|
ELSE IF (OkANSI) THEN
|
||
|
ShowEmulation := '1'
|
||
|
ELSE
|
||
|
ShowEmulation := '0';
|
||
|
END;
|
||
|
|
||
|
BEGIN
|
||
|
Assign(DoorFile,Liner.DoorPath+'DOOR32.SYS');
|
||
|
ReWrite(DoorFile);
|
||
|
WriteLn(DoorFile,ShowSpeed);
|
||
|
WriteLn(DoorFile,SockHandle);
|
||
|
WriteLn(DoorFile,ComPortSpeed);
|
||
|
WriteLn(DoorFile,'Renegade BBS '+General.Version); (* Was General.BBSName *)
|
||
|
WriteLn(DoorFile,UserNum);
|
||
|
WriteLn(DoorFile,ThisUser.RealName);
|
||
|
WriteLn(DoorFile,AOnOff(RName,ThisUser.RealName,Caps(ThisUser.Name))); (* Was AllCaps Name and force real name missing *)
|
||
|
WriteLn(DoorFile,ThisUser.SL);
|
||
|
WriteLn(DoorFile,(NSL DIV 60));
|
||
|
WriteLn(DoorFile,ShowEmulation); (* Was "1" *)
|
||
|
WriteLn(DoorFile,ThisNode);
|
||
|
Close(DoorFile);
|
||
|
END;
|
||
|
|
||
|
(*
|
||
|
COM1: <-- Comm Port - COM0: = LOCAL MODE
|
||
|
2400 <-- Baud Rate - 300 to 38400
|
||
|
8 <-- Parity - 7 or 8
|
||
|
1 <-- Node Number - 1 to 99 (Default to 1)
|
||
|
19200 <-- DTE Rate. Actual BPS rate to use. (kg)
|
||
|
Y <-- Screen Display - Y=On N=Off (Default to Y)
|
||
|
Y <-- Printer Toggle - Y=On N=Off (Default to Y)
|
||
|
Y <-- Page Bell - Y=On N=Off (Default to Y)
|
||
|
Y <-- Caller Alarm - Y=On N=Off (Default to Y)
|
||
|
Rick Greer <-- User Full Name
|
||
|
Lewisville, Tx. <-- Calling From
|
||
|
214 221-7814 <-- Home Phone
|
||
|
214 221-7814 <-- Work/Data Phone
|
||
|
PASSWORD <-- Password
|
||
|
110 *<-- Security Level
|
||
|
1456 <-- Total Times On
|
||
|
03/14/88 <-- Last Date Called
|
||
|
7560 <-- Seconds Remaining THIS call (for those that particular)
|
||
|
126 <-- Minutes Remaining THIS call
|
||
|
GR <-- Graphics Mode - GR=Graph, NG=Non-Graph, 7E=7,E Caller
|
||
|
23 <-- Page Length
|
||
|
Y <-- User Mode - Y = Expert, N = Novice
|
||
|
1,2,3,4,5,6,7 <-- Conferences/Forums Registered In (ABCDEFG)
|
||
|
7 <-- Conference Exited To \cf1\f1 DOOR\cf0 From (G)
|
||
|
01/01/99 <-- User Expiration Date (mm/dd/yy)
|
||
|
1 <-- User File's Record Number
|
||
|
Y <-- Default Protocol - X, C, Y, G, I, N, Etc.
|
||
|
0 *<-- Total Uploads
|
||
|
0 *<-- Total Downloads
|
||
|
0 *<-- Daily Download "K" Total
|
||
|
999999 <-- Daily Download Max. "K" Limit
|
||
|
10/22/88 <-- Caller's Birthdate (kg)
|
||
|
G:\\GAP\\MAIN <-- Path to the MAIN directory (where User File is) (kg)
|
||
|
G:\\GAP\\GEN <-- Path to the GEN directory (kg)
|
||
|
Michael <-- Sysop's Name (name \cf1 BBS\cf0 refers to Sysop as) (kg)
|
||
|
Stud <-- Alias name (rc)
|
||
|
00:05 <-- Event time (hh:mm) (rc)
|
||
|
Y <-- If its an error correcting connection (Y/N) (rc)
|
||
|
N <-- ANSI supported & caller using NG mode (Y/N) (rc)
|
||
|
Y <-- Use Record Locking (Y/N) (rc)
|
||
|
14 <-- \cf1 BBS\cf0 Default Color (Standard IBM color code, ie, 1-15) (rc)
|
||
|
10 *<-- Time Credits In Minutes (positive/negative) (rc)
|
||
|
07/07/90 <-- Last New \cf1 Files\cf0 Scan Date (mm/dd/yy) (rc)
|
||
|
14:32 <-- Time of This Call (hh:mm) (rc)
|
||
|
07:30 <-- Time of Last Call (hh:mm) (rc)
|
||
|
6 <-- Maximum daily \cf1 files\cf0 available (rc)
|
||
|
3 *<-- \cf1 Files\cf0 d/led so far today (rc)
|
||
|
23456 *<-- Total "K" Bytes Uploaded (rc)
|
||
|
76329 *<-- Total "K" Bytes Downloaded (rc)
|
||
|
A File Sucker <-- User Comment (rc)
|
||
|
10 <-- Total Doors Opened (rc)
|
||
|
10283 <-- Total Messages Left (rc)
|
||
|
*)
|
||
|
|
||
|
PROCEDURE Write_Door_Sys(RName: Boolean);
|
||
|
VAR
|
||
|
DoorFile: Text;
|
||
|
|
||
|
FUNCTION ShowEmulation: AStr;
|
||
|
BEGIN
|
||
|
IF (OkRIP) THEN
|
||
|
ShowEmulation := 'RIP'
|
||
|
ELSE IF (OkANSI OR OKAvatar) THEN
|
||
|
ShowEmulation := 'GR'
|
||
|
ELSE
|
||
|
ShowEmulation := 'NG';
|
||
|
END;
|
||
|
|
||
|
BEGIN
|
||
|
Assign(DoorFile,Liner.DoorPath+'DOOR.SYS');
|
||
|
ReWrite(DoorFile);
|
||
|
WriteLn(DoorFile,'COM'+AOnOff((ComPortSpeed = 0),'0',IntToStr(Liner.Comport))+':');
|
||
|
WriteLn(DoorFile,ActualSpeed);
|
||
|
WriteLn(DoorFile,'8');
|
||
|
WriteLn(DoorFile,ThisNode);
|
||
|
WriteLn(DoorFile,ComPortSpeed);
|
||
|
WriteLn(DoorFile,Copy(ShowYesNo(WantOut),1,1));
|
||
|
WriteLn(DoorFile,'N');
|
||
|
WriteLn(DoorFile,Copy(ShowYesNo(SysOpAvailable),1,1));
|
||
|
WriteLn(DoorFile,Copy(ShowYesNo(Alert IN ThisUser.Flags),1,1));
|
||
|
WriteLn(DoorFile,AOnOff(RName,ThisUser.RealName,Caps(ThisUser.Name))); (* ThisUser.Name Was All Caps *)
|
||
|
WriteLn(DoorFile,ThisUser.CityState);
|
||
|
WriteLn(DoorFile,Copy(ThisUser.Ph,1,3)+' '+Copy(ThisUser.Ph,5,8));
|
||
|
WriteLn(DoorFile,Copy(ThisUser.Ph,1,3)+' '+Copy(ThisUser.Ph,5,8));
|
||
|
WriteLn(DoorFile,'PASSWORD');
|
||
|
WriteLn(DoorFile,ThisUser.SL);
|
||
|
WriteLn(DoorFile,ThisUser.LoggedOn);
|
||
|
WriteLn(DoorFile,DoorToDate8(PD2Date(ThisUser.LastOn))); (* Used - vice / for separator *)
|
||
|
WriteLn(DoorFile,NSL);
|
||
|
WriteLn(DoorFile,(NSL DIV 60));
|
||
|
WriteLn(DoorFile,ShowEmulation);
|
||
|
WriteLn(DoorFile,ThisUser.PageLen);
|
||
|
WriteLn(DoorFile,Copy(ShowYesNo(Novice IN ThisUser.Flags),1,1));
|
||
|
WriteLn(DoorFile,ShowConferences); (* Was AR Flags *)
|
||
|
WriteLn(DoorFile,ThisUser.LastConf); (* Was 7 *)
|
||
|
WriteLn(DoorFile,DoorToDate8(PD2Date(ThisUser.Expiration))); (* Was 12/31/99 *)
|
||
|
WriteLn(DoorFile,UserNum);
|
||
|
WriteLn(DoorFile,'Z');
|
||
|
WriteLn(DoorFile,ThisUser.Uploads);
|
||
|
WriteLn(DoorFile,ThisUser.Downloads);
|
||
|
WriteLn(DoorFile,ThisUser.DLKToday);
|
||
|
WriteLn(DoorFile,General.DLKOneDay[ThisUser.SL]); (* Was 999999 *)
|
||
|
WriteLn(DoorFile,DoorToDate8(PD2Date(ThisUser.BirthDate))); (* Used - vice / for separator *)
|
||
|
WriteLn(DoorFile,General.DataPath); (* Was "\" *)
|
||
|
WriteLn(DoorFile,General.DataPath); (* Was "\" *)
|
||
|
WriteLn(DoorFile,General.SysOpName);
|
||
|
WriteLn(DoorFile,Caps(ThisUser.Name));
|
||
|
|
||
|
(* Fix - Event Time *)
|
||
|
WriteLn(DoorFile,'00:00');
|
||
|
|
||
|
WriteLn(DoorFile,Copy(ShowYesNo(Reliable),1,1));
|
||
|
WriteLn(DoorFile,Copy(ShowYesNo(ANSIDetected AND (ShowEmulation = 'NG')),1,1)); (* Was 'N'*)
|
||
|
WriteLn(DoorFile,Copy(ShowYesNo(General.MultiNode),1,1));
|
||
|
|
||
|
(* Fix - Default User Color *)
|
||
|
WriteLn(DoorFile,'3');
|
||
|
|
||
|
(* Fix - Time Credits In Minutes (Positive/Negative *)
|
||
|
WriteLn(DoorFile,'0');
|
||
|
|
||
|
WriteLn(DoorFile,DoorToDate8(PD2Date(NewFileDate))); (* Used - vice / for separator *)
|
||
|
WriteLn(DoorFile,PD2Time24(TimeOn)); (* Was TimeStr *)
|
||
|
WriteLn(DoorFile,PD2Time24(ThisUser.LastOn)); (* Was 00:00 *)
|
||
|
WriteLn(DoorFile,General.DLOneDay[ThisUser.SL]);
|
||
|
WriteLn(DoorFile,ThisUser.DLToday);
|
||
|
WriteLn(DoorFile,ThisUser.UK);
|
||
|
WriteLn(DoorFile,ThisUser.DK);
|
||
|
WriteLn(DoorFile,ThisUser.Note);
|
||
|
|
||
|
(* Fix - Total Doors Opened *)
|
||
|
WriteLn(DoorFile,'0');
|
||
|
|
||
|
(* Fix - Total Messages Left *)
|
||
|
WriteLn(DoorFile,'0'); (* Was 10 *)
|
||
|
|
||
|
Close(DoorFile);
|
||
|
LastError := IOResult;
|
||
|
END;
|
||
|
|
||
|
(*
|
||
|
1 User number
|
||
|
MRBILL User alias
|
||
|
Bill User real name
|
||
|
User callsign (HAM radio)
|
||
|
21 User age
|
||
|
M User sex
|
||
|
16097.00 User gold
|
||
|
05/19/89 User last logon date
|
||
|
80 User colums
|
||
|
25 User width
|
||
|
255 User security level (0-255)
|
||
|
1 1 if Co-SysOp, 0 if not
|
||
|
1 1 if SysOp, 0 if not
|
||
|
1 1 if ANSI, 0 if not
|
||
|
0 1 if at remote, 0 if local console
|
||
|
2225.78 User number of seconds left till logoff
|
||
|
F:\WWIV\GFILES\ System GFILES directory (gen. txt files)
|
||
|
F:\WWIV\DATA\ System DATA directory
|
||
|
890519.LOG System log of the day
|
||
|
2400 User baud rate
|
||
|
2 System com port
|
||
|
MrBill's Abode (the original) System name
|
||
|
The incredible inedible MrBill System SysOp
|
||
|
83680 Time user logged on/# of secs. from midn.
|
||
|
554 User number of seconds on system so far
|
||
|
5050 User number of uploaded k
|
||
|
22 User number of uploads
|
||
|
42 User amount of downloaded k
|
||
|
1 User number of downloads
|
||
|
8N1 User parity
|
||
|
2400 Com port baud rate
|
||
|
7400 WWIVnet node number
|
||
|
*)
|
||
|
|
||
|
PROCEDURE Write_Chain_Txt(RName: Boolean);
|
||
|
VAR
|
||
|
DoorFile: Text;
|
||
|
TUsed: LongInt;
|
||
|
BEGIN
|
||
|
Assign(DoorFile,Liner.DoorPath+'CHAIN.TXT');
|
||
|
ReWrite(DoorFile);
|
||
|
WriteLn(DoorFile,UserNum);
|
||
|
WriteLn(DoorFile,AOnOff(RName,ThisUser.RealName,Caps(ThisUser.Name))); (* Was AllCaps Name and force real name missing *)
|
||
|
WriteLn(DoorFile,ThisUser.RealName);
|
||
|
WriteLn(DoorFile,'');
|
||
|
WriteLn(DoorFile,AgeUser(ThisUser.BirthDate));
|
||
|
WriteLn(DoorFile,ThisUser.Sex);
|
||
|
|
||
|
(* What is gold ??? *)
|
||
|
WriteLn(DoorFile,'00.00');
|
||
|
|
||
|
WriteLn(DoorFile,DoorToDate8(PD2Date(ThisUser.LastOn))); (* Used "-" vice "/" *)
|
||
|
WriteLn(DoorFile,ThisUser.LineLen);
|
||
|
WriteLn(DoorFile,ThisUser.PageLen);
|
||
|
WriteLn(DoorFile,ThisUser.SL);
|
||
|
WriteLn(DoorFile,AOnOff(CoSysOp,'1','0')); (* Was Sysop *)
|
||
|
WriteLn(DoorFile,AOnOff(SysOp,'1','0')); (* Was CoSysOp *)
|
||
|
WriteLn(DoorFile,AOnOff((OkANSI OR OKAvatar),'1','0'));
|
||
|
WriteLn(DoorFile,AOnOff(InCom,'1','0'));
|
||
|
WriteLn(DoorFile,NSL);
|
||
|
WriteLn(DoorFile,General.DataPath);
|
||
|
WriteLn(DoorFile,General.DataPath);
|
||
|
WriteLn(DoorFile,General.LogsPath+'SYSOP.LOG'); (* Was missing path to the LOG *)
|
||
|
WriteLn(DoorFile,ComPortSpeed);
|
||
|
WriteLn(DoorFile,AOnOff((ComportSpeed = 0),'0',IntToStr(Liner.ComPort))); (* Was Liner.ComPort *)
|
||
|
WriteLn(DoorFile,StripColor(General.BBSName));
|
||
|
WriteLn(DoorFile,General.SysOpName);
|
||
|
|
||
|
(* Fix - Time user logged on/# of secs. from midnight *)
|
||
|
WriteLn(DoorFile,(GetPackDateTime - TimeOn));
|
||
|
|
||
|
(* Fix - User number of seconds on system so far *)
|
||
|
WriteLn(DoorFile,TUsed);
|
||
|
|
||
|
WriteLn(DoorFile,ThisUser.UK);
|
||
|
WriteLn(DoorFile,ThisUser.Uploads);
|
||
|
WriteLn(DoorFile,ThisUser.DK);
|
||
|
WriteLn(DoorFile,ThisUser.Downloads);
|
||
|
WriteLn(DoorFile,'8N1');
|
||
|
|
||
|
(* Fix - Com port baud rate *)
|
||
|
WriteLn(DoorFile,''); (* Line was missing *)
|
||
|
|
||
|
WriteLn(DoorFile,'0'); (* Line was missing *)
|
||
|
Close(DoorFile);
|
||
|
LastError := IOResult;
|
||
|
END;
|
||
|
|
||
|
(*
|
||
|
|
||
|
User's Name The name of the currently logged in user, with all color codes removed.
|
||
|
Speed The number 0 for 2400 baud, 1 for 300 baud, 2 for 1200 baud, 3 for 9600 baud, or 5 for console or
|
||
|
other speed.
|
||
|
City The last line of the user's mailing address that has data in it, or blank if no lines have data.
|
||
|
Security Level The number 5 for problem users, 30 for normal users, 80 for Aides, and 100 for Sysops.
|
||
|
Time left The time left in the user's accounts, in minutes. In an attempt to keep from overflowing other
|
||
|
software's limits, no value larger than 546 minutes is written.
|
||
|
ANSI Color The word "COLOR" if the current user has ANSI color enabled or "MONO" if he does not.
|
||
|
Password The current user's password (but not initials).
|
||
|
Userlog Number The current user's slot in LOG.DAT. (Not that this means anything to Citadel.)
|
||
|
Time used The number of minutes this call has lasted. If there is no user logged in, the number 0.
|
||
|
Unknown Citadel writes nothing out. Our information lists this field as being "01:23".
|
||
|
Unknown Citadel writes nothing out. Our information lists this field as being "01:23 01/02/90".
|
||
|
Unknown Citadel writes nothing out. Our information lists this field as being "ABCDEFGH".
|
||
|
Unknown Citadel writes nothing out. Our information lists this field as being "0".
|
||
|
Unknown Citadel writes nothing out. Our information lists this field as being "99".
|
||
|
Unknown Citadel writes nothing out. Our information lists this field as being "0".
|
||
|
Unknown Citadel writes nothing out. Our information lists this field as being "9999".
|
||
|
Phone number The current user's phone number.
|
||
|
Unknown Citadel writes nothing out. Our information lists this field as being "01/01/90 02:34".
|
||
|
Expert The word "EXPERT" if helpful hints are turned off or "NOVICE" if they are on.
|
||
|
File transfer protocol The name of the user's default file transfer protocol, or a blank line if none is specified.
|
||
|
Unknown Citadel writes nothing out. Our information lists this field as being "01/01/90".
|
||
|
Times on The number of times the current user has logged onto the system.
|
||
|
Lines per screen The number of lines per screen, or 0 if the current user has screen pause turned off.
|
||
|
Last message read The new message pointer for the current room.
|
||
|
Total uploads The total number of files the user has uploaded.
|
||
|
Total downloads The total number of files the user has downloaded.
|
||
|
Excessively Stupid!!! The text "8 { Databits }". (There are two spaces between the "8" and the "{".)
|
||
|
User's location The text "LOCAL if logged in on console, or "REMOTE" if logged in over the modem.
|
||
|
Port The text "COM" followed by the serial port number of the modem. (For example, "COM1" if the modem is
|
||
|
on the first serial port.)
|
||
|
Speed The number 0 for 2400 baud, 1 for 300 baud, 2 for 1200 baud, 3 for 9600 baud, or 5 for other speed.
|
||
|
No attention is paid to whether the user is on console or not.
|
||
|
Unknown Citadel writes nothing out. Our information lists this field as being "FALSE".
|
||
|
Another stupid thing The text "Normal Connection".
|
||
|
Unknown Citadel writes nothing out. Our information lists this field as being "01/02/94 01:20".
|
||
|
Task number Citadel writes the number 0.
|
||
|
Door number Citadel writes the number 1.
|
||
|
*)
|
||
|
|
||
|
PROCEDURE Write_CallInfo_BBS(RName: Boolean);
|
||
|
VAR
|
||
|
DoorFile: Text;
|
||
|
|
||
|
FUNCTION ShowSpeed: AStr;
|
||
|
BEGIN
|
||
|
IF (ComPortSpeed = 300) THEN
|
||
|
ShowSpeed := '1'
|
||
|
ELSE IF (ComPortSpeed = 1200) THEN
|
||
|
ShowSpeed := '2'
|
||
|
ELSE IF (ComPortSpeed = 2400) THEN
|
||
|
ShowSpeed := '0'
|
||
|
ELSE IF (ComPortSpeed = 9600) THEN
|
||
|
ShowSpeed := '3'
|
||
|
ELSE IF (ComPortSpeed = 0) THEN
|
||
|
ShowSpeed := '5'
|
||
|
ELSE
|
||
|
ShowSpeed := '4';
|
||
|
END;
|
||
|
|
||
|
BEGIN
|
||
|
Assign(DoorFile,Liner.DoorPath+'CALLINFO.BBS');
|
||
|
ReWrite(DoorFile);
|
||
|
WITH ThisUser DO
|
||
|
BEGIN
|
||
|
WriteLn(DoorFile,AOnOff(RName,AllCaps(ThisUser.RealName),AllCaps(ThisUser.Name)));
|
||
|
WriteLn(DoorFile,ShowSpeed);
|
||
|
WriteLn(DoorFile,AllCaps(ThisUser.CityState));
|
||
|
WriteLn(DoorFile,ThisUser.SL);
|
||
|
WriteLn(DoorFile,NSL DIV 60);
|
||
|
WriteLn(DoorFile,AOnOff((OkANSI OR OKAvatar),'COLOR','MONO'));
|
||
|
WriteLn(DoorFile,'PASSWORD');
|
||
|
WriteLn(DoorFile,UserNum);
|
||
|
WriteLn(DoorFile,'0');
|
||
|
WriteLn(DoorFile,Copy(TimeStr,1,5));
|
||
|
WriteLn(DoorFile,Copy(TimeStr,1,5)+' '+DateStr);
|
||
|
WriteLn(DoorFile,'A');
|
||
|
WriteLn(DoorFile,'0');
|
||
|
WriteLn(DoorFile,'999999');
|
||
|
WriteLn(DoorFile,'0');
|
||
|
WriteLn(DoorFile,'999999');
|
||
|
WriteLn(DoorFile,ThisUser.Ph);
|
||
|
WriteLn(DoorFile,ToDate8(PD2Date(ThisUser.LastOn))+' 00:00');
|
||
|
WriteLn(DoorFile,AOnOff((Novice IN ThisUser.Flags),'NOVICE','EXPERT'));
|
||
|
WriteLn(DoorFile,'All');
|
||
|
WriteLn(DoorFile,'01/01/80');
|
||
|
WriteLn(DoorFile,ThisUser.LoggedOn);
|
||
|
WriteLn(DoorFile,ThisUser.PageLen);
|
||
|
WriteLn(DoorFile,'0');
|
||
|
WriteLn(DoorFile,ThisUser.Uploads);
|
||
|
WriteLn(DoorFile,ThisUser.Downloads);
|
||
|
WriteLn(DoorFile,'8 { Databits }');
|
||
|
WriteLn(DoorFile,AOnOff((InCom OR OutCom),'REMOTE','LOCAL'));
|
||
|
WriteLn(DoorFile,'COM'+AOnOff((InCom OR OutCom),IntToStr(Liner.Comport),'0'));
|
||
|
WriteLn(DoorFile,PD2Date(ThisUser.BirthDate));
|
||
|
WriteLn(DoorFile,ComPortSpeed);
|
||
|
WriteLn(DoorFile,AOnOff((InCom OR OutCom),'TRUE','FALSE'));
|
||
|
WriteLn(DoorFile,AOnOff(Reliable,'MNP/ARQ','Normal')+' Connection');
|
||
|
WriteLn(DoorFile,'12/31/99 23:59');
|
||
|
WriteLn(DoorFile,ThisNode);
|
||
|
WriteLn(DoorFile,'1');
|
||
|
END;
|
||
|
Close(DoorFile);
|
||
|
LastError := IOResult;
|
||
|
END;
|
||
|
|
||
|
PROCEDURE Write_SFDoors_Dat(RName: Boolean);
|
||
|
VAR
|
||
|
DoorFile: Text;
|
||
|
S: AStr;
|
||
|
BEGIN
|
||
|
Assign(DoorFile,Liner.DoorPath+'SFDOORS.DAT');
|
||
|
ReWrite(DoorFile);
|
||
|
WriteLn(DoorFile,UserNum);
|
||
|
WriteLn(DoorFile,AOnOff(RName,AllCaps(ThisUser.RealName),AllCaps(ThisUser.Name)));
|
||
|
WriteLn(DoorFile,'PASSWORD');
|
||
|
IF (RName) THEN
|
||
|
BEGIN
|
||
|
IF (Pos(' ',ThisUser.RealName) = 0) THEN
|
||
|
S := ThisUser.RealName
|
||
|
ELSE
|
||
|
S := Copy(ThisUser.RealName,1,(Pos(' ',ThisUser.RealName) - 1));
|
||
|
END
|
||
|
ELSE
|
||
|
BEGIN
|
||
|
IF (Pos(' ',ThisUser.Name) = 0) THEN
|
||
|
S := ThisUser.Name
|
||
|
ELSE
|
||
|
S := Copy(ThisUser.Name,1,(Pos(' ',ThisUser.Name) - 1));
|
||
|
END;
|
||
|
WriteLn(DoorFile,S);
|
||
|
WriteLn(DoorFile,ComPortSpeed);
|
||
|
WriteLn(DoorFile,AOnOff((ComPortSpeed = 0),'0',IntToStr(Liner.Comport)));
|
||
|
WriteLn(DoorFile,NSL DIV 60);
|
||
|
WriteLn(DoorFile,Timer); { seconds since midnight }
|
||
|
WriteLn(DoorFile,StartDir);
|
||
|
WriteLn(DoorFile,AOnOff((OkANSI OR OKAvatar),'TRUE','FALSE'));
|
||
|
WriteLn(DoorFile,ThisUser.SL);
|
||
|
WriteLn(DoorFile,ThisUser.Uploads);
|
||
|
WriteLn(DoorFile,ThisUser.Downloads);
|
||
|
WriteLn(DoorFile,General.TimeAllow[ThisUser.SL]);
|
||
|
WriteLn(DoorFile,'0'); { time on (seconds) }
|
||
|
WriteLn(DoorFile,'0'); { extra time (seconds) }
|
||
|
WriteLn(DoorFile,'FALSE');
|
||
|
WriteLn(DoorFile,'FALSE');
|
||
|
WriteLn(DoorFile,'FALSE');
|
||
|
WriteLn(DoorFile,Liner.InitBaud);
|
||
|
WriteLn(DoorFile,AOnOff(Reliable,'TRUE','FALSE'));
|
||
|
WriteLn(DoorFile,'A');
|
||
|
WriteLn(DoorFile,'A');
|
||
|
WriteLn(DoorFile,ThisNode);
|
||
|
WriteLn(DoorFile,General.DLOneDay[ThisUser.SL]);
|
||
|
WriteLn(DoorFile,ThisUser.DLToday);
|
||
|
WriteLn(DoorFile,General.DLKOneDay[ThisUser.SL]);
|
||
|
WriteLn(DoorFile,ThisUser.DLKToday);
|
||
|
WriteLn(DoorFile,ThisUser.UK);
|
||
|
WriteLn(DoorFile,ThisUser.DK);
|
||
|
WriteLn(DoorFile,ThisUser.Ph);
|
||
|
WriteLn(DoorFile,ThisUser.CityState);
|
||
|
WriteLn(DoorFile,General.TimeAllow[ThisUser.SL]);
|
||
|
Close(DoorFile);
|
||
|
LastError := IOResult;
|
||
|
END;
|
||
|
|
||
|
PROCEDURE DoDoorFunc(DropFileType: Char; MenuOption: Str50);
|
||
|
VAR
|
||
|
Answer: AStr;
|
||
|
ReturnCode: Integer;
|
||
|
DoorTime: LongInt;
|
||
|
UseRealName: Boolean;
|
||
|
BEGIN
|
||
|
IF (MenuOption = '') AND (InCom) THEN
|
||
|
Exit;
|
||
|
SaveURec(ThisUser,UserNum);
|
||
|
UseRealName := FALSE;
|
||
|
IF (Copy(AllCaps(MenuOption),1,2) = 'R;') THEN
|
||
|
BEGIN
|
||
|
UseRealName := TRUE;
|
||
|
MenuOption := Copy(MenuOption,3,(Length(MenuOption) - 2));
|
||
|
END;
|
||
|
Answer := FunctionalMCI(MenuOption,'','');
|
||
|
CASE DropFileType OF
|
||
|
'3' : BEGIN
|
||
|
lStatus_Screen(100,'Outputting DOOR32.SYS ...',FALSE,Answer);
|
||
|
Write_Door32_Sys(UseRealName);
|
||
|
END;
|
||
|
'P' : BEGIN
|
||
|
lStatus_Screen(100,'Outputting PCBOARD.SYS ...',FALSE,Answer);
|
||
|
Write_PCBoard_Sys(UseRealName);
|
||
|
END;
|
||
|
'C' : BEGIN
|
||
|
lStatus_Screen(100,'Outputting CHAIN.TXT ...',FALSE,Answer);
|
||
|
Write_Chain_Txt(UseRealName);
|
||
|
END;
|
||
|
'D' : BEGIN
|
||
|
lStatus_Screen(100,'Outputting DORINFO1.DEF ...',FALSE,Answer);
|
||
|
Write_DorInfo1_Def(UseRealName);
|
||
|
END;
|
||
|
'G' : BEGIN
|
||
|
lStatus_Screen(100,'Outputting DOOR.SYS ...',FALSE,Answer);
|
||
|
Write_Door_Sys(UseRealName);
|
||
|
END;
|
||
|
'S' : BEGIN
|
||
|
lStatus_Screen(100,'Outputting SFDOORS.DAT ...',FALSE,Answer);
|
||
|
Write_SFDoors_Dat(UseRealName);
|
||
|
END;
|
||
|
'W' : BEGIN
|
||
|
lStatus_Screen(100,'Outputting CALLINFO.BBS ...',FALSE,Answer);
|
||
|
Write_CallInfo_BBS(UseRealName);
|
||
|
END;
|
||
|
END;
|
||
|
IF (Answer = '') THEN
|
||
|
Exit;
|
||
|
Shel('Running "'+Answer+'"');
|
||
|
SysOpLog('Opened door '+Answer+' on '+DateStr+' at '+TimeStr);
|
||
|
|
||
|
IF (General.MultiNode) THEN
|
||
|
BEGIN
|
||
|
LoadNode(ThisNode);
|
||
|
SaveNAvail := (NAvail IN NodeR.Status);
|
||
|
Exclude(NodeR.Status,NAvail);
|
||
|
SaveNode(ThisNode);
|
||
|
END;
|
||
|
|
||
|
DoorTime := GetPackDateTime;
|
||
|
ShellDos(FALSE,Answer,ReturnCode);
|
||
|
DoorTime := (GetPackDateTime - DoorTime);
|
||
|
Shel2(FALSE);
|
||
|
|
||
|
IF (General.MultiNode) THEN
|
||
|
BEGIN
|
||
|
LoadNode(ThisNode);
|
||
|
IF (SaveNAvail) THEN
|
||
|
Include(NodeR.Status,NAvail);
|
||
|
SaveNode(ThisNode);
|
||
|
END;
|
||
|
|
||
|
NewCompTables;
|
||
|
SaveGeneral(TRUE);
|
||
|
LoadURec(ThisUser,UserNum);
|
||
|
LoadFileArea(FileArea);
|
||
|
LoadMsgArea(MsgArea);
|
||
|
ChDir(StartDir);
|
||
|
Com_Flush_Recv;
|
||
|
SysOpLog('Returned on '+DateStr+' at '+TimeStr+'. Spent '+FormattedTime(DoorTime));
|
||
|
END;
|
||
|
|
||
|
END.
|